Systems and methods for providing song samples

ABSTRACT

A first electronic device, while a first media content item of a first type is playing back on a second electronic device, detects a user input selecting a second media content item. In response to the user input, the electronic device determines a type of media content item of the selected second media content item. In accordance with a determination that the second media content item is of the first type of media content item, the first electronic device generates a media control request for controlling playback of the second media content item at the second electronic device, and in accordance with a determination that the second media content item is of a second type of media content item, the first electronic device generates a media control request for controlling playback of the second media content item at a third electronic device that is distinct from the second electronic device.

RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.16/920,292, filed Jul. 2, 2020, which is a continuation of U.S.application Ser. No. 16/125,477, filed Sep. 7, 2018, entitled “SystemsAnd Methods For Providing Song Samples,” (U.S. Pat. No. 10,742,701),which is a continuation of U.S. application Ser. No. 15/132,142, filedApr. 18, 2016, entitled “Systems And Methods For Providing SongSamples,” (U.S. Pat. No. 10,075,496) which is a continuation of U.S.application Ser. No. 14/060,495, filed Oct. 22, 2013, entitled “SystemsAnd Methods For Pre-Fetching Media Content,” (U.S. Pat. No. 9,319,445)which claims priority and benefit to U.S. Provisional Application No.61/717,065, filed Oct. 22, 2012, entitled “Systems And Methods ForMulti-Context Media Control And Playback,” each of which is herein fullyincorporated by reference in its respective entirety.

This application is related to U.S. Provisional Application No.61/713,444, filed Oct. 12, 2012, entitled “Systems and Methods ForMulti-Context Media Control And Playback,” and U.S. application Ser. No.14/053,443, filed Oct. 14, 2013, entitled “Systems And Methods ForMulti-Context Media Control And Playback,” (U.S. Pat. No. 9,246,967)each of which is herein fully incorporated by reference in itsrespective entirety.

TECHNICAL FIELD

The disclosed implementations relate generally to controlling andplaying back media content.

BACKGROUND

Modern users have a variety of options for devices and ways to consumemedia content. For example, multiple different types of media, includingtext, still images, video, audio, and other digital media, can beconsumed on personal computers, laptops, mp3 players, mobile phones,tablet computers, televisions, stereos, and many other electronicdevices. These electronic devices typically have the ability to storedigital media files in memory that is integrated into the devices. Butacquiring and storing all the media content to which a user desiresaccess can be prohibitively difficult and expensive.

Current technology also allows users to stream digital media content totheir electronic devices over local networks or the Internet, forexample, including over wireless connections. Streaming services allowusers to have access to a much larger collection of media than wouldotherwise be possible. Streaming services store media content on serversremote from the electronic devices, and then send the media content tothe electronic devices when it is requested. The media content is thencached on the electronic device for presentation. In some cases, thecontent may be temporarily buffered/stored before presentation, buttypically the data is deleted from memory after presentation, allowingan almost unlimited amount of media to be streamed to a device withoutrunning out of storage space on the electronic device. Some streamingservices also allow streamed content to be stored on the local device.

As more and more devices are capable of streaming media content fromremote servers, as well as storing media content locally, it is oftencumbersome to manage all of the different sources of media to which auser has access. Moreover, even where a user has multiple devices thatcan access the same content (for example, a handheld device and a laptopcomputer that can both access a media streaming service), each devicemust typically be controlled with its own dedicated interface.Accordingly, it would be advantageous to provide systems and methodsthat allow a user to remotely control various electronic devices in asimple and intuitive manner.

Furthermore, as users are increasingly using computers and otherelectronic devices to browse and consume media content, it is beneficialto increase the ease and convenience with which media content can bebrowsed, previewed, and selected for presentation. For example, whenbrowsing in a media store, previews of media content may be available sothat the user can listen to a portion of a song or watch a portion of avideo before choosing to purchase it or otherwise select it forpresentation. However, previewing media content may be inconvenient whenmedia content is already being presented, such as when a user isbrowsing an online music store while listening to other music.Accordingly, it would be advantageous to provide systems and methodsthat allow a user to preview media content in a convenient andstreamlined manner.

SUMMARY

Accordingly, systems and methods for pre-fetching media content aredescribed which allow media content to be provided to a user with littledelay between a request for the media content and the output of themedia content. Various heuristics can be used to determine what mediacontent items are likely to be selected by a user for preview and/orpresentation at any given time, and, thus, what media content itemsshould be pre-fetched. Accordingly, the determined media content items(or a portion thereof) can then be downloaded, cached, or otherwise madeavailable to the user's device—before the user actually selects themedia content item for playback—to provide rapid playback initiation ifand when such media content is selected.

One exemplary technique for determining when to pre-fetch a mediacontent item (or a portion thereof) is to detect changes in the userinterface with which the user is browsing media content. In particular,certain changes in the user interface can indicate that a particularmedia content item is likely to be selected, and, therefore, that theparticular media content item should be pre-fetched. For example, astreaming music browsing interface can include pictures corresponding tothe album art associated with displayed media content (e.g., tracks,albums, etc.). When a cursor hovers over a particular album art imagefor a certain amount of time, it is a reasonable assumption that theuser will request playback of that particular media content item. Inanother example, when an identifier of a media content item is initiallydisplayed to a user (e.g., because the user scrolled down in a browsinginterface, such as a webpage or an application interface), it is areasonable assumption that the user will request playback of that mediacontent item. In both examples, in response to detecting one or more ofthese conditions, all or a portion of that media content item can bedownloaded to the user device so that, when and if the user actuallydoes select the media content item for preview or playback, it is playedback quickly and without the delays associated with downloading orbuffering the media content item. Other heuristics for determining whatmedia content to pre-fetch are also described herein.

Exemplary Implementations

In accordance with some implementations, a method of previewing mediacontent is disclosed. In some implementations, the method is performedat an electronic device having one or more processors and memory storinginstructions for execution by the one or more processors. The methodincludes detecting a first input. In some implementations, the firstinput is a contact with a touch-sensitive surface. In someimplementations, the first input is a mouse click event. In someimplementations, in addition to clicking and touching, the first inputincluding moving the mouse pointer over an area without clicking. Inresponse to determining that a change to the first input has beendetected within a first time period after detecting the first input,first media content is added to a playlist. In some implementations, thechange to the first input is a liftoff from a touch-sensitive surface.In some implementations, the change to the first input is a mouseclick-release event. In some implementations, the change to the firstinput is an addition of another input. In response to determining that achange to the first input has not been detected within the first timeperiod after detecting the first input, the first media content iscaused to be presented. In some implementations, the first media contentis presented at the same device that received the input (e.g., acomputer, television, or mobile phone). In some implementations, thefirst media content is presented at a different device (e.g., a homestereo system or wireless speaker system).

In accordance with some implementations, a method of previewing mediacontent is disclosed. In some implementations, the method is performedat an electronic device having one or more processors and memory storinginstructions for execution by the one or more processors. The methodincludes, during presentation of a first song, detecting a first input.In some implementations, the first input is a touch input, mouse input,or other appropriate input. The audibility of the first song is reduced.In some implementations, the audibility is reduced by lowering thevolume of, muting, or pausing the first song. A second song ispresented. After a first time period, presentation of the second song isceased. In some implementations, the first time period corresponds tothe duration of the first input. For example, the first input cancorrespond to a touch- or click-and-hold input, and the second song ispresented as long as the input is maintained. The audibility of thefirst song is then increased. In some implementations, the first song ispresented at the same or substantially the same audibility as it wasprior to presenting the second song.

In accordance with some implementations, a method of previewing mediacontent is disclosed. In some implementations, the method is performedat an electronic device having one or more processors and memory storinginstructions for execution by the one or more processors. The methodincludes, during presentation of currently presented media content,displaying an affordance to a user, where selection of the affordancewill cause secondary media content to be presented. For example, theaffordance may be a button, icon, or text that, when selected, causessecondary media content to be previewed or otherwise presented. Inresponse to displaying the affordance, at least a portion of secondarymedia content is obtained. In some implementations, the portion of thesecondary media content is obtained at the same device on which theaffordance is displayed. In some implementations, it is obtained at adifferent device. A first input corresponding to a selection of theaffordance is detected. The audibility of the currently presented mediacontent is reduced, and the secondary media content is presented. Aftera first time period, the presentation of the secondary media content isceased, and the audibility of the currently presented media content isincreased.

In accordance with some implementations, a method of previewing mediacontent is disclosed. In some implementations, the method is performedat an electronic device having one or more processors and memory storinginstructions for execution by the one or more processors. The methodincludes detecting the presence of a cursor in a first area of adisplay. In some implementations, the first area of the displaycorresponds to an icon, button, graphic, text, or other type of control,and can be displayed in a media content description area, including, forexample, album art, movie stills, content metadata, and the like. Mediacontent is presented in response to detecting the presence of the cursorwithin the first area. The removal of the cursor from a second area ofthe display region is detected, where the second area is larger than andcontiguous with the first area. In some implementations, the second areacorresponds to the media content description area. In someimplementations, it is the same size as the media content descriptionarea. The media content is presented in response to detecting theremoval of the cursor from the second area.

In accordance with some implementations, a method of controlling mediapresentation is disclosed. In some implementations, the method isperformed at a first electronic device having one or more processors andmemory storing one or more programs for execution by the one or moreprocessors. The first electronic device receives a media control commandfor a second electronic device. In response to receiving the mediacontrol command, the server sends a server media control request to aserver system, and sends a local media control request to a secondelectronic device within a local network to which both the firstelectronic device and the second electronic device are connected. Localnetworks may be Local Area Networks (LANs), Personal Area Networks(PANs), ad-hoc computer networks, peer-to-peer computer networks, andthe like, and may be wired or wireless. Local networks may use one ormore communication standards, protocols, or technologies, such asInternet Protocol (e.g., including Transmission Control Protocol, UserDatagram Protocol, Internet Control Message Protocol, Hypertext TransferProtocol, etc.), BLUETOOTH, Wired Ethernet (e.g., IEEE 802.3), WirelessFidelity (Wi-Fi) (e.g., IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, and/orIEEE 802.11n), or any other suitable communication protocol, includingcommunication protocols not yet developed as of the filing date of thisdocument. For example, in some implementations, two nearby devices incommunication with one another via BLUETOOTH communication technologiesconstitutes a local network.

In some implementations, the server media control request is sent to theserver system over the Internet. In some implementations, the firstelectronic device provides a single user interface that allows a userboth to select media content for presentation by the first electronicdevice and to generate media control requests configured to cause themedia content to be presented by the second electronic device.

Media content is selected from the group consisting of: an audio track,a video, an image, an audio playlist, and a video playlist. In someimplementations, the first electronic device is selected from the groupconsisting of: a computer, a mobile phone, a remote control device, anda portable media player. In some implementations, the second electronicdevice is selected from the group consisting of: a television, a homemedia receiver/player, a computer, a home audio/visual system, and aspeaker. In some implementations, the server and the local media controlrequests are both configured to cause a single media control operationto be implemented at the second electronic device. In someimplementations, the media control operation is selected from the groupconsisting of: play, pause, skip, fast-forward, rewind, adjust an audiovolume, change an order of items in a playlist, add items to a playlist,remove items from a playlist, adjust audio equalizer settings, and set auser setting.

In accordance with some implementations, another method of controllingmedia presentation is disclosed. In some implementations, the method isperformed at a second electronic device having one or more processorsand memory storing one or more programs for execution by the one or moreprocessors. The second electronic device receives, from a server system,a server media control request corresponding to a media controloperation to be implemented at the second electronic device, wherein theserver media control request was sent from the server in response to theserver receiving the server media control request from a firstelectronic device. The second electronic device receives, from the firstelectronic device, a local media control request sent within a localnetwork to which both the first electronic device and the secondelectronic device are connected, wherein the local media control requestcorresponds to the media control operation.

In some implementations, the server media control request is receivedprior to the local media control request. In response to receiving theserver media control request, the second electronic device performs themedia control operation. After receiving the local media controlrequest, the second electronic devices determines whether the servermedia control request and the local media control request correspond tothe same media control operation. If the server media control requestand the local media control request correspond to the same media controloperation, the server ignores the local media control request.

In some implementations, the media control operation is a request tobegin presenting media content at the second electronic device, and themedia content is being presented by the first electronic device. Priorto receiving the server media control request or the local media controlrequest, the second electronic device buffers/caches an upcoming portionof the media content being presented by the first electronic device. Thesecond electronic device receives one of the server media controlrequest or the local media control request. The second electronic deviceinitiates presentation of the buffered portion of the media content.

In accordance with some implementations, another method of controllingmedia presentation is disclosed. In some implementations, the method isperformed at a second electronic device having one or more processorsand memory storing one or more programs for execution by the one or moreprocessors. The second electronic device receives, from a firstelectronic device, a local media control request corresponding to amedia control operation, wherein the local media control request is sentwithin a local network to which both the first electronic device and thesecond electronic device are connected. The second electronic devicereceives a media stream from a server system, wherein the media streamwas sent from the server in response to the server receiving a servermedia control request from the first electronic device, and wherein theserver media control request corresponds to the media control operation.

In some implementations, the media stream is received prior to receivingthe local media control request. In response to a determination that thelocal media control request corresponds to a request to initiatepresentation of the media stream, the second electronic devices ignoresthe local media control request.

In accordance with some implementations, another method of controllingmedia presentation is disclosed. In some implementations, the method isperformed at a server system having one or more processors and memorystoring one or more programs for execution by the one or moreprocessors. The server system receives, from a first electronic device,a server media control request, wherein the first electronic device alsosends a local media control request to the second electronic devicewithin a local network to which both the first electronic device and thesecond electronic device are connected, and wherein the server mediacontrol request and the local media control request are both configuredto initiate a same media control operation by the second electronicdevice. The server system sends at least one of the server media controlrequest or a media stream corresponding to the server media controlrequest to the second electronic device.

BRIEF DESCRIPTION OF THE DRAWINGS

The implementations disclosed herein are illustrated by way of example,and not by way of limitation, in the figures of the accompanyingdrawings. Like reference numerals refer to corresponding partsthroughout the drawings.

FIG. 1 is a block diagram illustrating a server client environment inaccordance with some implementations.

FIG. 2 is a block diagram illustrating a client-server environment inaccordance with some implementations.

FIG. 3 is a block diagram illustrating a server system in accordancewith some implementations.

FIG. 4 is a block diagram illustrating an electronic device inaccordance with some implementations.

FIG. 5 is a flow diagram illustrating a method of controlling mediapresentation, performed by a first electronic device, in accordance withsome implementations.

FIGS. 6A-6B are flow diagrams illustrating a method of controlling mediapresentation, performed by a second electronic device, in accordancewith some implementations.

FIG. 7 is a flow diagram illustrating another method of controllingmedia presentation, performed by a second electronic device, inaccordance with some implementations.

FIG. 8 is a flow diagram illustrating a method of controlling mediapresentation, performed by a server, in accordance with someimplementations.

FIGS. 9-12 are flow diagrams illustrating methods of previewing mediacontent, in accordance with some implementations.

FIG. 13 is a diagram illustrating an exemplary electronic device anduser interface, according to some implementations.

FIG. 14 is a diagram illustrating another exemplary user interface,according to some implementations.

FIG. 15 is a flow diagram illustrating a method of pre-fetching at leasta portion of media content for preview and/or addition to a play list.

FIG. 16 is a flow diagram illustrating a method of pre-fetching at leasta portion of media content for preview and/or addition to a play list.

DETAILED DESCRIPTION

The various implementations described herein enable a first electronicdevice to remotely control media presentation at a second electronicdevice. In some implementations, the disclosed systems and methodsenable a user with a first electronic device to use the first electronicdevice to playback media content, and also to use the first electronicdevice to cause media content to be presented by a second electronicdevice. For example, a user may use a mobile phone to listen to music.The user may also use the same mobile phone as a remote control tocontrol the playback (and/or other functionalities) of a second device,such as a laptop computer, a desktop computer, a home mediareceiver/player, or a home audio/visual system. Thus, the first device,which is separate and distinct from the second device, can both presentmedia and control other media devices.

In order to cause media control operations to be performed at a secondelectronic device, the first electronic device sends media controlrequests to the second electronic device. Media control requests arecommunications configured to cause some media control operation, such asinitiating or controlling media content playback (e.g., play, stop,pause, change volume, skip, etc.). Increasingly, homes, businesses, andother locations provide local communications networks, such as awireless or wired Ethernet network, a BLUETOOTH network, or the like, towhich multiple devices are connected. Accordingly, a person's mobilephone, home media system, computer, television, etc., may all beconnected to the same local communications network, allowing thesedevices to communicate with each other and with other devices outsidethe local communications network (e.g., on the Internet) to send andreceive the media control requests.

In some implementations, the first device sends media control requeststo the second device through multiple channels, such as through acentral server as well as via a local network. This may increase thespeed and reliability of the media control requests, thus creating amore responsive and robust remote-control system for the user.Additionally, sending the media control requests via the different paths(e.g., through a local network as well as through the wider Internet)ensures that the remote control functionality operates properly undermany different network connectivity situations. For example, if a user'slocal wireless network (e.g., a wireless LAN, PAN, etc.) is notconfigured to allow a handheld device to communicate directly to anothermedia playing device, media control requests are still sent from thehandheld device, through the Internet (e.g., through a cellular datanetwork), to the other media playing device. If, on the other hand, thehandheld device does not have access to the Internet, but the user'slocal wireless network is configured to allow direct communicationbetween devices, the media control requests are still sent to the othermedia playing device despite the lack of Internet access. Accordingly,in some implementations described herein, media control requests aresent from a first electronic device to a server system located remotelyfrom the first electronic device. The server system then causes a secondelectronic device to present media in accordance with the request fromthe first electronic device.

As noted above, in some implementations, the first and second electronicdevices are located on the same local network. In some implementations,the local network is a Local Area Network (LAN). In someimplementations, a LAN is a type of local network that creates IPaddress space behind a traffic routing device (e.g., a wired or wirelessrouter) and limits incoming connections based on the specificrequirements for the Local Area Network. In some implementations, LANsfacilitate connections between devices on the LAN without using a publicdomain name system. In some implementations, devices on a LANcommunicate using TCP/IP protocols. In some cases, Local Area Networksare confined to a single building or a group of buildings in relativelysmall geographical proximity. In some implementations, the local networkis a Personal Area Network (PAN). In some implementations, a PAN is anetwork of devices that spans a relatively small geographical distance,such as a few inches or yards. In some implementations, a PAN isestablished using a peer-to-peer and/or an ad-hoc network. In someimplementations, devices in a peer-to-peer and/or ad-hoc networkcommunicate using BLUETOOTH communications technology, wirelessuniversal serial bus, infrared communication protocols, etc. Localnetworks may be wired or wireless.

In some implementations, the server system is located remotely from boththe first and the second electronic device. For example, in someimplementations, the server system is not located on the same localnetwork (e.g., it is not in the same LAN, PAN, peer-to-peer network,ad-hoc network, etc.) as either the first electronic device or thesecond electronic device. Thus, the first and second electronic devicescan communicate over a local network, as described above, while, incontrast, communication between the server system and the first andsecond electronic device is over a network such as the Internet.

Another feature of the disclosed ideas is that the same application, andeven the same graphical user interface (GUI), can be used for bothpresenting media content by the first electronic device and forcontrolling the presentation of media by the second electronic device.This provides a seamless experience for the user, as the user does notneed to use different control interfaces (e.g., buttons, touchscreens,remote controls, etc.) for each device, thus obviating the need for theuser to learn and use different control interfaces, keyboard layouts,media control functionalities, and the like, for different devices.

Furthermore, in some implementations, a media control request isconfigured to change the active presentation device for media contentthat is currently being presented. For example, a user who is listeningto a music playlist on a mobile phone can request to change the activelistening device to a home stereo system. In some implementations, therequest to change media presentation devices is initiated by a user(e.g., via a user interface on the mobile phone). In someimplementations, the request is initiated automatically and without userintervention by automatically detecting a predetermined condition, suchas location, date, time of day, and/or day of week. For example, if auser is listening to an audio playlist on a mobile phone while walkinghome, the user's home stereo system may begin playing back the audioinstead of (or in addition to) the mobile phone once it is determinedthat she has arrived at her home (e.g., using a positioning system(e.g., a GPS, cell-tower triangulation, etc.), proximity sensors,inertial monitoring devices, etc.).

In some implementations, the switching occurs in response to the serversystem receiving notification from the first electronic device that aspecific predetermined condition has been met. For example, the firstelectronic device may monitor its geographic location, and when itdetermines that it has moved into (or out of) a predefined area, thefirst electronic device will send a notification to the server systemthat the predetermined condition has been met. In another example, thecondition is met when the server detects a change in the state of thefirst electronic device, such as when the first electronic deviceestablishes communication with a particular wireless network, or whenthe first electronic device pairs with or detects the second electronicdevice. In response, the server system ceases transmitting the mediacontent stream to the first electronic device and begins transmittingthe media content stream to a second electronic device. In this way, theuser is able to establish conditions for automatically changing thedevice to which media content is being streamed or stream betweendevices.

Automatic switching may also be conditioned on additional factors, suchas whether a device on which presentation is to be initiated is alreadypresenting other media content, a time of day, a time of week, etc. Forexample, continuing the previous example, if the home stereo system isalready presenting media content when the user returns home, the homestereo system will not switch to the playlist that was being presentedon the user's mobile phone. This, in this case, the home stereo isavailable to be automatically activated only when it is idle and/or notpresenting other media content.

In some implementations, the active presentation device is configured toautomatically change only during predetermined time or date ranges. Forexample, in some implementations, a home stereo system willautomatically begin presenting media content only during daytime hours(e.g., between 10:00 AM and 8:00 PM), and/or during weekends.

In some implementations, different users have different priority levelsfor automatic device switching. This can help avoid frequent andannoying changes in media presentation due to different users returninghome, entering a particular area, etc. In some implementations, when auser initiates presentation of media content at a device, the user'spriority level is logged or stored. When another user attempts toinitiate presentation of different media content at that device, theother user may do so only if his or her priority level is above thefirst user. In some implementations, priority levels are only used todetermine whether automatic device switching may occur. Thus, if alower-priority user returns home while listening to a certain playlist,but a higher-priority user is already listening to music (or presentingother media content) via the home stereo, the lower-priority user'splaylist will not be automatically presented via the home stereo system.On the other hand, manual requests to change the media content beingpresented by the home stereo system may be implemented regardless of thepriority level of the requestor.

In some implementations, media presentation devices can present mediacontent regardless of the origin of the content. For example, content inthe audio playlist in the preceding example may be stored on the mobilephone, and streamed to the home stereo system from the mobile phone(e.g., via a local connection, such as a wireless LAN, peer-to-peerconnection, a public network such as the Internet, etc.). If the contentin the audio playlist is being streamed from a separate source (e.g., aremote server associated with a media content provider, a local mediaserver, etc.), then the source can simply switch the destination of theaudio stream from the mobile phone to the home stereo system.

In some implementations, when the active presentation device is changed,media content is delivered to the active presentation device regardlessof the origin of the content. For example, when a song in an activeplaylist is stored on the user's mobile phone (but presented by theuser's home stereo system), the song will be streamed or otherwiseprovided by the mobile phone; when a song is stored on a user's networkaccessible storage (NAS) system, the song will be streamed or otherwiseprovided by the NAS; when a song in the playlist is stored in a remoteserver, that song will be streamed or otherwise provided by the remoteserver. Songs that are stored in different locations (e.g., on themobile phone and the remote server) can be included in the sameplaylist, and can be streamed to whatever device is playing theplaylist.

In some implementations, when the active presentation device is changed,the context of the content stream, originally available on the firstpresentation device, becomes available on the second presentationdevice. The context of a content stream includes various informationabout the content stream, including the position within the currentlyplaying media content, the previously presented media content (e.g., aplay history), the position within previously presented media content(if unfinished), the media content to be played next, metadata of thecurrent or upcoming media content (e.g., artist, album, track), etc. Forexample, the media content, once playback is initiated at the secondelectronic device, will retain the position in the current media contentitem and the position of the active playlist. In this way the mediastream being presented on the first device is seamlessly transferred toa new device while maintaining the same state as on the first device.Thus, users may easily switch between devices without fear of losingtheir place in a song, a movie, a playlist, etc.

In some implementations, when media content is being presented at onedevice, one or more other devices buffer/cache a portion of that mediacontent, for example, in case the user should choose to present themedia content with one of the other devices instead of or in addition tothe current device. In this way, the other devices are able to beginpresenting the media content quickly, as the media presentation canbegin at the other device(s) as soon as they receive a request to do so,rather than waiting for communications to be established between a mediacontent source and the presentation device, for initial buffering ofstreaming content prior to presentation, and the like.

In some implementations, a user can select media content for preview.For example, a user can select, at one device, a song, playlist, oralbum to preview on the same device or on a different device. In someimplementations, any media content that is being presented when thepreview is requested is muted, dimmed, or paused (or otherwise made lessaudible/visible) while the preview is presented. Accordingly, the usercan preview the media content without the inconvenience of having tomanually restart the earlier content playback and/or without losingtheir place in the earlier content playback. Content for a preview canbe pre-fetched by downloading and caching/buffering at least a portionof the content in response to a preview control (e.g., a button) beingpresented to a user, such as when a user views media content in a mediabrowser on an electronic device. Moreover, various user interfaces andtechniques can be used to initiate a media content preview and/or to addmedia to an existing playlist. For example, touch-and-hold inputs on atouch screen interface can be used to initiate a preview, andtouch-and-release inputs can be used to add content to a playlist.Various implementations of these and other ideas are discussed below.

Attention is now directed to the figures, and in particular to FIG. 1,which is a block diagram of a client-server environment, according tosome implementations. The client-server environment 100 includes one ormore client environments (108-1 . . . 108-n) and a server system 120that are connected through a network 110. In some implementations, theclient environment 108-1 includes one or more electronic devices (e.g.,first electronic device 102-1 and second electronic device 106-1). Insome implementations, the server system 120 is associated with a mediacontent provider to which users (and their electronic devices) may haveaccounts that enable the user to access media content from the serversystem 120. The network 110 includes any of a variety of networks,including wide area networks (WAN), wireless networks, wired networks,the Internet, or a combination of such networks.

In accordance with some implementations, the client environment 108-1includes a first electronic device 102-1. In some implementations, thefirst electronic device 102-1 is one of the group of: a personalcomputer, a mobile electronic device, a laptop, a tablet computer, amobile phone, a digital media player, or any other electronic deviceable to present media content.

In accordance with some implementations, the client environment 108-1also includes a second electronic device 106-1. In some implementations,the second electronic device 106-1 is one of the group of: a computer, ahome audio/visual system, a home media receiver/player, or any otherelectronic device able to present media content. In someimplementations, both the first electronic device 102-1 and the secondelectronic device 106-1 are associated with a common user account (orassociated user accounts) provided by a content provider with which theserver system 120 is associated. For example, in some implementations,the server system 120 is operated and/or provided by asubscription-based media streaming service to which a user may have anaccount, and the first and second electronic devices 102-1, 106-1 areeach associated with account credentials that enable them to communicatewith and receive content from the server system 120.

In accordance with some implementations, both the first electronicdevice 102-1 and the second electronic device 106-1 are on the samelocal network. In some implementations, the local network is a LocalArea Network. In some implementations, the server system 120 is notlocated on the same Local Area Network as either the first electronicdevice 102-1 or the second electronic device 106-1.

As noted above, Local Area Networks are often associated with arelatively small geographic area (e.g., one house or building) andcreate IP address space behind a traffic routing device. In someimplementations, the traffic routing device uses network addresstranslation to connect devices within the LAN to devices outside theLAN. Network address translation is the process of readdressing packetsby modifying the IP address contained in each packet so that the packetsreach their intended destination device. Network address translationallows a plurality of electronic devices on the Local Area Network toconnect to the Internet through a single IP address (e.g., the IPaddress of the traffic routing device). The traffic routing device (i.e.a router) receives incoming packets, determines which device on theLocal Area Network is the intended recipient, and modifies the IPaddress to correctly identify that device. For example, a Local AreaNetwork has 9 devices with local IP addresses 192.168.0.1-192.168.0.9that all connect to a router. The router connects to the Internet andhas an IP address of 12.162.29.2. Using network address translation, therouter translates the source address for all communications sent fromany of the 9 devices and intended for destinations in the Internet to be12.162.29.2 (the router's IP address). On the other hand, the routercollects all packets incoming from the Internet, determines the intendedrecipient device based upon the contents of each packet, and translatesthe destination IP address to the address of the correct device on theLocal Area Network. So when the intended device is the device with LocalArea Network IP address 196.168.0.2, the router would change thedestination address to this address. Local Area Networks also commonlyuse firewalls to limit incoming connections. In this way, computerdevices outside of the Local Area Network are generally not able tocommunicate directly with the devices on a Local Area Network. Indeed,in some Local Area Networks the devices in the network are notcontactable even by other devices in the Local Area Network.

In some implementations, both the first electronic device 102-1 and thesecond electronic device 106-1 are on the same Personal Area Network. Insome implementations, the Personal Area Network uses BLUETOOTHcommunication technology. In some implementations, the server system 120is not located on the same Personal Area Network as either the firstelectronic device 102-1 or the second electronic device 106-1.

In some implementations, the first electronic device 102-1 includes amedia content presentation and control application 104 (hereinafter“media application”). The media application 104 is able to control thepresentation of media by the electronic device 102-1. For example, themedia application 104 enables a user to navigate media content items,select media content items for playback on the electronic device 102-1,create and edit playlists, etc. In some implementations, media contentis stored by the first electronic device 102-1 itself In otherimplementations, the media content is stored by a server system 120,which may be located remotely from the first electronic device 102-1.The media content is then streamed from the server system 120 to thefirst electronic device 102-1 over the network 110.

In some implementations, the data streamed from the server system 120 istemporarily stored/cached by the first electronic device 102-1 in themedia content buffer 105 in the memory of the first electronic device102-1. In some implementations, media content stored in the mediacontent buffer 105 is removed after the media content is presented bythe first electronic device 102-1, allowing new media content data to bestored in the buffer 110. In other implementations, at least some of themedia content stored in the media content buffer 105 is retained for apredetermined amount of time after the content is presented by the firstelectronic device 102-1 and/or until other predetermined conditions aresatisfied.

In some implementations, the media application 104 is also able tocontrol media content presentation by the second electronic device106-1, which is distinct from the first electronic device 102-1. Thus,the user is able to use the media application 104 to cause theelectronic device 102-1 to act both as a media presentation device aswell as a remote control for other media presentation devices. Thisallows a user to control media presentation on multiple electronicdevices from within a single application 104, and/or using a single userinterface.

In some implementations, when a user wants to use the first electronicdevice 102-1 to control media presentation by the second electronicdevice 106-1, the user interacts with the media application 104 to senda media control request (e.g., server media control request 112, FIG. 2)to the server system 120. The server system 120 receives the mediacontrol request over the network 110. For example, the user may press abutton on a touchscreen of the first electronic device 102-1 in order tosend the media control request to the server system 120 and/or directlyto the second electronic device 106-1. As described below, a mediacontrol request is, for example, a request to begin presentation ofmedia content by the second electronic device 106-1. Though often usedherein to describe requests to initiate or begin presentation of mediaby the second electronic device 106-1, in some implementations, mediacontrol requests also include requests and/or signals to control otheraspects of the media that is being presented on the second electronicdevice 106-1, including but not limited to commands to pause, skip,fast-forward, rewind, adjust volume, change the order of items in aplaylist, add or remove items from a playlist, adjust audio equalizersettings, change or set user settings or preferences, provideinformation about the currently presented content, and the like.

The client-server environment 100 also includes a server system 120. Insome implementations, the server system 120 includes a media streamingmodule 122, a media content database 124, and a context database 126.The media content database 124 stores media content that can bepresented by an electronic device. For example, in some implementations,the media content database 124 stores audio (e.g., music, audiobooks,etc.), video (e.g., movies, television shows, etc.), images, or othercontent that can be streamed to other electronic devices. In someimplementations, the media content database includes data stored indifferent formats and file types to allow a variety of different devicesand/or applications to receive streamed content. In someimplementations, the data is stored in a single file format and isconverted/transcribed to the appropriate data type before or as it isstreamed to a remote device.

In some implementations, the server system 120 includes a mediastreaming module 122. In some implementations, the media streamingmodule 122 receives media control requests from electronic devices andstreams media content in response. In some implementations, the mediastreaming module 122 receives media control requests from a firstelectronic device 102-1 and forwards the request to a second electronicdevice 106-1, which then makes the final request to the server system120 for the media content. For example, a user sends a media controlrequest to the server using a mobile phone (a first electronic device)requesting that media be presented by a home stereo system (a secondelectronic device). The server system 120 then sends the requested media(and/or the media control request) to the home stereo system. This andother techniques are discussed in greater detail below with respect toFIGS. 5-8.

In some implementations, the received media control request includesinformation identifying the electronic device to which the server system120 should forward the media control request. For example, a user mayhave multiple electronic devices that can present media from the serversystem 120, such as a mobile phone, a computer system, a television, ahome stereo, etc. In some implementations, the identifying informationis a unique or semi-unique device identifier, such as an IP address, aMedia Access Control address (MAC address), a user-specified devicename, an International Mobile Equipment Identity number (IMEI number),or the like. Accordingly, the media control request will identify that arequest is intended for the home stereo, for example, so that the serversystem 120 can send the requested media and/or the media control requestto the home stereo.

In some implementations, the server system 120 includes a contextdatabase 126. The context database 126 stores data associated with thepresentation of media content by an electronic device. In someimplementations, the context database 126 includes, among other things,the current position in a media content stream that is being activelypresented by an electronic device, a playlist associated with the mediacontent stream, previously played content, skipped pieces of mediacontent, and previously indicated user preferences. For example, thecontext database may include information that a content stream to anelectronic device currently is presenting a song, at 1 minute and 23seconds into the song, as well as all the songs played in the last hourand the next 20 songs in the playlist. In some implementations, theserver system 120 transmits the context associated with a media contentstream to the device that is presenting the content stream so that oneor more items of context information can be used by the device, such asfor display to the user. In some implementations, when the device towhich the media content is being streamed changes, the server system 120transmits the context associated with the active media content to thenewly active device.

FIG. 2 is a block diagram illustrating a client-server environment 100in accordance with some implementations. The client-server environment100 includes a local network 202 that encompasses at least a firstelectronic device 102-1 and a second electronic device 106-1.Client-server environment 100 also includes a server system 120 that islocated remotely from and is not integrated into the local network. Insome implementations, the server system 120 stores media content andstreams the stored media content to remote electronic devices uponrequest. In some implementations, the local network 202 is a Local AreaNetwork, and the server system 120 is not within the IP address space ofthe Local Area Network. Thus, the server system 120 communicates witheither the first or the second electronic devices (102-1, 106-1) via theInternet. For example, the media content streams 114-1, 114-2, and theserver media control requests 112, discussed below, may be transmittedvia the Internet.

In some implementations, a user of the first electronic device 102-1uses an application running on the first electronic device 102-1 to senda server media control request 112 to the server system 120. In someimplementations, the server media control request 112 includesinformation identifying a second electronic device to which the controlrequest is addressed, as well as a payload that indicates what mediacontrol operation is to be performed by the second electronic device. Asnoted above, in some implementations, media control requests includerequests to control aspects of the media that is being presented on thesecond electronic device 106-1, including but not limited to commands toinitiate media presentation, cease media presentation, pause, skip,fast-forward, rewind, adjust volume, change the order of items in aplaylist, add or remove items from a playlist, adjust audio equalizersettings, change or set user settings or preferences, provideinformation about the currently presented content (e.g., metadata), andthe like.

In some implementations, in response to receiving the server mediacontrol request 112, the server system 120 forwards the server mediacontrol request 112 to the second electronic device 106-1. When receivedby the second electronic device 106-1, the server media control request112 causes the second electronic device to initiate the media controloperation indicated by the request. In some cases, this will includecommunicating with the server system 120 to perform any of theoperations described above that may be requested by a media controlrequest. In some cases, the second electronic device 106-1 will not needto establish any subsequent communication in response to receiving theserver media control request 112, such as when the control request isfor changing the volume, muting the speakers, changing equalizersettings, etc., as these operations can often be performed by the secondelectronic device 106-1 alone.

In some implementations, in response to receiving the server mediacontrol request 112, the server system 120 will perform an operationrequested by the server media control request 112 without forwarding therequest to the second electronic device 106-1. For example, if theserver media control request 112 contains a request to initiatepresentation of media content at the second electronic device 106-1, theserver system 120 may simply begin sending the media content to thesecond electronic device 106-1 (e.g., via the media content stream 114)without also forwarding the server media control request 112 to thesecond electronic device 106-1. However, even where the server system120 executes some types of media control operations upon receiving therequest from the first electronic device 102-1 (and without forwardingthe request to the second electronic device 106-1), the server system120 still forwards some types of media control requests to the secondelectronic device 106-1. For example, a server media control request 112that corresponds to a request to increase or decrease speaker volume, orany other request that can only be executed by the second electronicdevice 106-1, are forwarded to the second electronic device 106-1, eventhough requests to initiate presentation of media content may not beforwarded.

In some implementations, the first electronic device 102-1 also sends alocal media control request 116 directly to the second electronic device106-1 at substantially the same time that it sends the server mediacontrol request 112 to the server system 120. In some implementations,the local media control request 116 is configured to initiate the samemedia control operation as the server media control request 112.

In some implementations, the local media control request 116 is sent viathe local network 202 (e.g., a Local Area Network, a Personal AreaNetwork, a peer-to-peer connection, etc.). In implementations where thelocal network 202 is a Local Area Network that establishes IP addressspace behind a traffic routing device, the local media control request116 is sent to the second electronic device 106-1 without sending thelocal media control request 116 to devices that are not within the IPaddress space of the Local Area Network, and/or without sending thelocal media control request 116 through a public domain name system.Sending a local media control request 116 to the second electronicdevice 106-1 over the Local Area Network, in addition to sending theserver media control request 112 over the Internet to the server system120, allows for two separate, redundant pathways for delivering themedia control request to the second electronic device. This can allowthe second device to react more quickly and more reliably to the mediacontrol request of the first electronic device 102-1. For example, ifeither connection path between the first and second electronic devicesis not available, is improperly configured, or the like, the otherconnection path can ensure that remote-control functionality is stillavailable. Moreover, this allows a service provider (e.g., a provider ofsoftware and/or devices that are configured to present media content) toprovide a robust remote control solution that reduces the necessarytechnical knowledge of the end user, and is more likely to work in manydifferent communication networks and environments (e.g., where a user'sinternal router is not configured for internal LAN communications, wherean active Internet connection does not exist, etc.).

In some implementations, the server media control request 112 and thelocal media control request 116 are identical. For example, they maycontain the same message, such as “Device{UserX/Home Stereo};Operation{Play: UserX/Party Mix}.” Upon receiving this message, eachdevice may respond by performing a predefined set of operations. Forexample, in some implementations, the server system 120 begins streamingmedia content associated with User X's “Party Mix” playlist to User X'sHome Stereo system. Similarly, the second electronic device 106-1 (here,the home stereo system), upon receiving the same message in the localmedia control request 116, sends a request to the server system 120 toinitiate playback of the same media content. Because multiple controlrequests that are configured to initiate the same media controloperation are sent from the first electronic device, someimplementations provide systems and methods for handling duplicate orconflicting control requests, so that media control operations are notrepeated, and to ensure that new and/or different media control requestsare not ignored. Some examples of this are described below withreference to FIGS. 7-8.

In some implementations, the server system 120 performs the mediacontrol request without forwarding it to the second electronic device106-1. In this case, executing the requested operation includesstreaming media content associated with User X's “Party Mix” playlist toUser X's Home Stereo system. In some implementations, the server system120 forwards the message to the second electronic device 106-1. Theforwarded message may be the identical message, or it may be modified ortranslated before it is forwarded to the second electronic device 106-1.In implementations where the message is forwarded, it may be forwardedinstead of or in addition to the server system 120 executing therequested operation. Upon receipt of the forwarded message, the secondelectronic device 106-1 may then send a request to the server system 120to initiate playback of the requested content.

In some implementations, the server system 120 may be configured toinitiate a media control request (e.g., streaming media to the secondelectronic device 106-1) only if the request originates from the deviceat which the media is to be presented, and not if it originates from adifferent device. For example, in contrast to the example above wherethe server system 120 begins streaming media to the second electronicdevice 106-1 in response to a request from the first electronic device102-1, the server system 120 instead would only begin streaming media tothe second electronic device 106-1 if the request came directly from thesecond electronic device itself. In such implementations, the server 120may be configured to forward all media control requests to the secondelectronic device 106-1 prior to executing them, as described above, sothat the second electronic device 106-1 can determine whether, when, andhow to execute the request. In some implementations, the secondelectronic device 106-1 (and/or the server system 120) determines theauthenticity, trustworthiness, and/or origin of a media control requestbefore it executes the request or initiates the operation.

In some implementations, the server media control request 112 and thelocal media control request 116 are not identical (e.g., the message isin a different form, or contains more, less, or different information),but are both configured to initiate the same media control operation bythe second electronic device. For example, in some implementations, theserver media control request 112 includes a command to begin deliveringcontent to the second electronic device 106-1, while the local mediacontrol request 116 includes a command to cause the second electronicdevice 106-1 to issue a request to the server system 120. The requestfrom the second electronic device 106-1 to the server system 120 inresponse to receiving one of the server media control request 112 andthe local media control request 116 may be described as a third mediacontrol request (not shown). The form and content of the third mediacontrol request may be the same as or different from the server mediacontrol request 112 and the local media control request 116. In eithercase, the third media control request will be configured to cause thesame media control operation as those requests. Accordingly, thoughthese requests are configured to cause different processes to beperformed by different devices (e.g., causing the server to beginstreaming media to the second electronic device, or cause the secondelectronic device to request that media from the server), theyultimately cause the same ultimate media control operation to beinitiated (e.g., presentation of the media by the second electronicdevice).

As noted above, in some implementations, a media control request isconfigured to switch the active media presentation device from onedevice (e.g., a user's mobile phone) to another (e.g., a user's homestereo system). In some implementations, this includes changing thedevice to which the server system 120 is streaming media content. Forexample, a user who is listening to a music playlist on a mobile phonecan request that the music be played through a home stereo systeminstead of (or in addition to) the mobile phone. In someimplementations, the request to change media presentation devices isinitiated by a user (e.g., via a user interface on the mobile phone),and in some implementations the request is initiated automatically(e.g., based on the location of the mobile phone, the proximity of themobile phone to the home stereo system, the time of day, the day of theweek, and/or user identities).

FIG. 2 also illustrates how the destination of a media content streamcan be changed from one device to another in a client-serverenvironment. In some implementations, the first electronic device 102-1is receiving a media content stream 114-1 from the server system 120.For example, the first electronic device 102-1 may be a mobile phonereceiving streaming music from the server system 120. A device withinthe client-server environment 100 then requests that the media also, orinstead, be presented by the second electronic device 106-1. Thisrequest may come from the first and/or the second electronic device (orany other device within the environment), and may be initiated by auser, or it may be initiated automatically. For example, the user may,upon returning home, request that the music that she is listening to onthe mobile phone instead by presented by the second electronic device106-1. In some implementations, the request to change the activepresentation device is sent via the local and server media controlrequests 116, 112. Upon receiving and/or processing a request, theserver system 120 begins sending the media control stream 114-2 to thesecond electronic device 106-1. The media content stream 114-1 that wasbeing sent to the first electronic device 102-1 may continue or may beterminated, depending on factors such as an explicit user request,historical usage patterns, predefined preferences, etc. In someimplementations, second electronic devices 106-n buffer/cache a portionof the same media stream that is being presented by the first electronicdevice 102-1, so that when the second electronic device 106-n isselected to begin presentation of the media content, the secondelectronic device 106-n begins presenting the media content seamlesslyand without interruption. Buffering and/or caching of media content isdiscussed in greater detail below with reference to FIGS. 6A-6B.

In some implementations, as noted above, the context of the mediacontent stream 114-1 is available to the second electronic device 106-1once it begins receiving the media content stream 114-2. For example,information such as the current location within a playlist, recent playhistory, recent changes to a playlist, etc., are all available to thesecond electronic device 106-1, and may be viewed, used, modified, orotherwise operated on by a user through a user interface associated withthe second electronic device 106-1. In some implementations, the contextinformation is stored in the context database 126 of the server system120.

Also, as noted above, in some implementations, the second electronicdevice 106-1 buffers/caches a portion of the content that is beingstreamed to the first electronic device 102-1, in case the user shouldchoose to begin media presentation by the second device instead of or inaddition to the first device. In some implementations, the secondelectronic device 106-1 caches/buffers a predetermined portion of themedia content that is being streamed to the first electronic device102-1, such as the next 10 seconds, 20 seconds, 30 seconds, 1 minute,etc. In some embodiments, the second electronic device 106-1 receivesinformation about the current media playback location from the firstelectronic device 102-1 and/or the server system 120, such that when thesecond electronic device 106-1 receives a command to begin presentingthe media content, it begins presentation at substantially the sameposition as the first electronic device 102-1.

In some implementations, the server system 120, the first electronicdevice 102-1, and the second electronic device 106-1 are configured topresent media content regardless of the particular device on which themedia content is stored. For example, as described above, media contentcan be stored at the server system 120 (e.g., in the media contentdatabase 124), and streamed to the first and/or the second electronicdevices. However, media content may also be stored at the first and/orthe second electronic devices (or other storage devices accessible tothe first and/or second electronic devices, such as a NAS). This mediacontent may be made accessible for presentation by any capable deviceassociated with a user, even though the media content may not beavailable from the server system 120. For example, in someimplementations, a playlist on a first electronic device (e.g., a user'smobile phone) may include media content that is stored on that device'sown memory, as well as media content that must be streamed from adifferent source, such as a remote server (e.g., server system 120) orstorage device within the local network 202 (e.g., a NAS). When the userplays back the playlist at the first electronic device, that device canswitch between retrieving media content from its own memory and thedifferent source, depending on where the media content item is stored.However, if the user wished to instead playback the playlist from asecond electronic device (e.g., the user's home audio system), thesecond electronic device may not have the same media content stored inits memory as the first electronic device. Thus, in accordance with someimplementations, media content that is stored on one device in the localnetwork 202 (e.g., on first or second electronic devices 102-n, 106-nand/or on any device within a client environment 108-n, such as a NAS)may be streamed to another device within the local network 202 when itsturn in the playlist arrives. Accordingly, the user need not worry aboutwhere any given media content item is stored, because the media may bestreamed from either remote or local sources, or both.

In some implementations, music stored locally on the first electronicdevice is streamed to the second electronic device via localcommunication paths (e.g., within a Local Area Network) when that musicis not available from a remote source associated with a media contentprovider (e.g., the server system 120). In some implementations, musicstored on a first electronic device, but not available from the mediacontent provider, is streamed to the server associated with the mediacontent provider, and then streamed from the server associated with themedia content provider to the second electronic device. Accordingly,media that is stored on one device may be accessible to another deviceseamlessly and without having to download, transfer, or otherwiseduplicate the media content on multiple devices. Also, this process maybe seamless to the user, such that the same controls and inputs are usedboth for causing a second device to stream media from a remote source,and for causing locally stored media to be streamed to the second devicevia local communication paths.

As described above, it would be beneficial to allow users to previewmedia content on an electronic device. This way, a user can listen to aportion of a media content item before deciding whether to purchase itor otherwise select it for presentation in its entirety. For example,users may wish to browse music choices in an electronic marketplace, andhear a snippet of a song that they come across in order to determine ifthey want to add it to a playlist or select it for immediate playback.Previewing media content can be a nuisance, though. If a user is alreadylistening to a song, for example, and requests a preview of anothersong, playback of the first song may simply be terminated. Once thepreview is over, then, the user may have to take additional steps toresume playback of the first song. For example, the user may have tonavigate to a different area of a user interface, locate the song thatwas previously playing, and either restart the song from the beginning,or use trial-and-error to locate the point in the song where it wasstopped. Accordingly, implementations discussed herein provideconvenient previewing techniques to address these and/or other issues.

Moreover, modern media consumers access media on many different devicesand use many different types of interfaces. For example, users browseand consume media on personal computers, laptops, mp3 players, portablemedia players, mobile phones, tablet computers, televisions, stereos,etc. These devices use various input devices and techniques, such astouch screens, pointing devices (e.g., computer mice or trackballs),touch-sensitive track-pads, keyboards, remote controls, and the like.Because of the differences between these various types of devices anduser interfaces, various user interface techniques are also discussedbelow that provide convenient ways of initiating media content previewsand other media controls.

While the following discussion frequently refers to previewing and/orpresenting music, this is merely exemplary of any media content forwhich a preview may be presented, such as podcasts, audiobooks, radio(e.g., broadcast radio, Internet radio, etc.), video (e.g., movies,music videos, television programming, short-form video, etc.), and thelike. It will be understood to one of ordinary skill in the art thatother types of media content can be substituted in various aspects ofthe implementations described below. For example, a user may preview avideo during playback of a song, or may preview a broadcast radio ortelevision stream during playback of a locally stored podcast.

As noted above, it is inconvenient if a media content preview interruptscurrently played media content and does not restart it when the previewfinishes. Thus, a method is provided that allows a user to preview mediacontent even when the user is consuming other media content, andrestarts the other media content once the preview is complete. Forexample, a user may be listening to a song through a computer while alsobrowsing other music on the computer, such as in an online music storeor a media player. When the user finds a song, artist, or album that hewould like to preview, he can select the content for preview using apreview button or another input technique. In response to the selection,the song that is currently playing can be paused, muted, or otherwisemade less audible, while the content to be previewed is presented to theuser. If the user was watching a video, the video can be dimmed, muted,lowered in volume, made translucent, paused, reduced in size,split-screened with the preview, or the like. Then, when the preview isover (e.g., because the user terminated the preview, or because apreview time expired), the original song or video is resumed. Forexample, if an originally played song was muted, or if the volume wasotherwise lowered, the volume is returned to its previous level. If theoriginal song was paused, it is un-paused. By resuming playback of theoriginal song, the previewing experience is conveniently integrated intothe overall listening experience, and the user is not burdened withadditional navigation and selection tasks in order to return to his orher earlier content playback.

Furthermore, throughout the preview, any position and/or playbackinformation of the originally playing media content can be maintained,such as the position in a song, the position in a playlist, a playhistory associated with the current playback session, etc. For example,if a user is listening to a playlist or album on a “shuffle” setting,the play history is maintained so that, when the original playback isresumed, songs are not replayed or re-ordered.

In some cases, a preview of media content should not interruptpresentation of currently playing media content by pausing, muting, orlowering the volume of the currently playing content. For example, if auser is presenting music via a home stereo system, he or she may want topreview other music to add to the current playlist without pausing ormuting the music being played from the home stereo system. Thissituation may occur, for example, when the user is entertaining guestsand wants to add music to a playlist without interrupting the currentmusic. Thus, instead of muting, pausing, or otherwise interrupting themusic, the preview may be presented to the user via a different devicethan the active presentation device, or via a subset of a group ofactive presentation devices (e.g., one speaker of a group speakers), orusing a different audio output of the active presentation device. Forexample, if media content (e.g., a playlist) is being presented via ahome audio system, a media preview may be presented to a user at acomputer or mobile phone. In another example, if media content is beingpresented through one output means of a device (e.g., a charging port,data port, BLUETOOTH link, etc.), a preview can be presented throughanother output means (e.g., a headphone jack or a built-in speaker). Insome implementations, a user manually selects a particular device forpreviewing media content and a particular device for presenting mediacontent (e.g., regular playback). In some implementations, these and/orother features are automatically enabled when a user selects a “DJ” modeon a media content browsing device. In some implementations, the “DJ”mode causes media content from a playlist to be routed to onepreselected device (or device output), and media content forpresentation to be routed to a different preselected device (or deviceoutput).

Various ways of initiating a media content preview may also be provided.In some implementations, a user may select an affordance displayed on anelectronic device in order to begin the preview. The affordance may bean icon, graphic, image, area, button (e.g., hardware button ortouch-screen button), text, or any other control that can be selected bya user. For example, in some implementations, the affordance is an iconof a “play” button (or any other appropriate image, such as a thumbnailimage of an album cover or movie poster), or the text “preview now” (orany other appropriate text). A user can select the affordance byclicking on the affordance with a cursor (e.g., via a mouse or touchpadinterface), by touching on the area of a touch screen associated withthe displayed affordance, hovering a cursor over the affordance, or thelike.

Different inputs or interactions with a single affordance can causedifferent actions. In some implementations, when a user selects anaffordance using one type of input or interaction, a preview of mediacontent associated with that affordance is presented. If the userselects the affordance with a different type of input or interaction,however, other actions can be taken, such as adding the media contentassociated with the affordance to a current playlist, or terminating anycurrently played media content and presenting the selected media contentinstead.

In some implementations, an input representing a user selection of mediacontent is detected (e.g., a touch contact or mouse click-down on adescription of some media content), and different actions are takendepending on whether a change to the input is detected before or afterexpiration of a first time period. For example, if the change to theinput is detected before expiration of the time period, the mediacontent may be added to a playlist (e.g., as a next song, at the end ofthe playlist, or replacing a currently played song). If, on the otherhand, no change to the input is detected before the expiration of thetime period, the media content may be previewed. As described inserveral examples below, the input and the change to the input may bemany different inputs and/or interactions. For example, the input may bea contact with a touch-sensitive surface, and the change to the inputmay be a liftoff from the touch-sensitive surface. In another example,the input may be a contact with a first area of a touch-sensitivesurface, and the change to the first input may be a contact with asecond area of the touch-sensitive surface. In this case, the contactwith the first area may correspond to a user placing one finger on thetouch-sensitive surface, and the contact with the second area maycorrespond to the user placing a second finger at a different point onthe touch sensitive surface. In yet another example, an input cancorrespond to a “hover” input, where a cursor (e.g., controlled by amouse, trackpad, etc.) is placed within a certain predefined area on adisplay. The predefined area may correspond to an icon, a graphic, text,or the like. A change to this input includes, for example, a mouse clickor removal of the cursor from the predefined area. Other inputs andtouch gestures may also act as the first input and/or the change to thefirst input, such as tap, pinch-together, pinch-apart, touch-and-hold,touch-and-release, click-and-hold, click-and-release, click-release,double-click, double-tap, sliding gestures, multi-touch gestures,drag-and-drop, slide-and-release, right mouse click, selection of menuitems (e.g., stop, pause, play now, play next, add to queue,increase/decrease volume, etc.), and the like.

In some implementations, a “touch-and-hold” or a “click-and-hold” input(also referred to as a maintained input) initiates a preview of theselected media content, while a “touch-and-release” or“click-and-release” input (also referred to as a momentary input) addsthe selected media content to a current playlist. In this case, aninitial contact on a touch screen (or mouse click-down) corresponds tothe input, and a liftoff from the touch screen (or a mouseclick-release) corresponds to the change to the input.

In some implementations, where a maintained input is used to initiate amedia content preview, the selected media content is previewed (e.g.,played back) for as long as the input is maintained. For example, in atouch-screen environment, after it is determined that a contact with thetouch screen corresponds to a maintained input (i.e., no liftoff hasbeen detected for a certain time period), the media content is previeweduntil the contact is removed (i.e., when the liftoff is finallydetected). In some implementations, the selected media content ispreviewed for a shorter or longer time than the duration of themaintained input. For example, in some implementations, the maintainedinput begins a preview clip of a predetermined length (e.g., 5, 10, 15,20 seconds, etc.). In some implementations, the preview will continuebeyond the point when the user ends the maintained input, such as toprovide an audio/video fade-out or other transition, or until the fullpreview clip is over. In some implementations, the preview will end atthe earlier of (i) the expiration of a time period (e.g., the previewclip length) or (ii) the end of the maintained input. Thus, once a userprovides a maintained input, the preview will be presented until theuser releases the maintained input or until the preview clip is over. Insome implementations, a preview is only limited by the length of theactual media content, so it is possible to preview an entire song,album, playlist, or other media content.

In some implementations, in order to determine whether an inputcorresponds to a maintained input or a momentary input, a timer isstarted when a contact or click-down input is detected. If a liftoff orclick-release event is detected before the timer expires, the inputcorresponds to a momentary input. If a liftoff or click-release event isnot detected before the time expires, the input corresponds to amaintained input. In this case, the expiration of the timer (possibly inconjunction with additional signals or logic) initiates the mediacontent preview. In some implementations, a liftoff or click-releaseevent that occurs after the time expires causes the preview to end.

In some implementations, other actions can be taken in response todetecting changes to the input. For example, in some implementations,once an input initiates a preview, a change to the input—such as movinga cursor with a mouse, or making a “swipe” gesture on a touchscreen—changes a playback attribute of the preview (or causes otherappropriate actions). Here too, the change to the input may includevarious interactions and gestures, such as pinch-together, pinch-apart,touch-and-hold, touch-and-release, click-and-hold, click-and-release,click-release, double-click, sliding gestures, multi-touch gestures,etc. In some implementations, the change to the input causes the previewto skip forward or backward within a song, a playlist (e.g., includingan album, a user generated playlist, a series of podcasts, etc), or anyother media content or collection of media content items.

In some implementations, the change to the input includes a directionalcomponent, such as a “swipe” gesture on a touch screen, and actions canbe taken based on the particular direction of the input. For example, insome implementations, a user first initiates a preview by touching andholding an area of the touch screen with a finger. The user can thenslide his finger forward to skip to a next track in the playlist, orslide his finger backwards to skip to a previous track in the playlist.In some implementations, the actions taken (e.g., skipping tracks,fast-forwarding within a track) are triggered if the input has asufficient directional component in a certain direction. Varioustechniques can be used to determine the directional components of aswipe input. In some implementations, a swipe input path with a length,direction, and/or angle (e.g., as measured from the point of initialcontact) that falls within a particular range may trigger the action. Insome implementations, a swipe input in a right-hand direction (e.g.,substantially horizontal and from left to right) causes a first action,and a swipe input in a left-hand direction (e.g., substantiallyhorizontal and from right to left) causes a second action. In someimplementations, a swipe input in a down direction (e.g., substantiallyvertical and from top to bottom) causes a first action, and a swipeinput in an up direction (e.g., substantially vertical and from bottomto top) causes a second action. In some implementations, the first andsecond actions are a skip forward action and a skip back action,respectively.

In some implementations, other directional inputs or gestures causethese or other actions. For example, a first contact corresponding tomaintained input (i.e., a “touch-and-hold” input on a touch screen) maycause a preview to begin, and a second contact may cause the preview toskip forward to a next or previous track, or fast-forward or rewind thepreview. The second contact may be a maintained input or a momentaryinput. In some implementations, a second contact corresponding to amaintained input will cause the preview to fast-forward for as long asthe maintained input is held. Other directional inputs or gestures thatmay be used in the above implementations include, but are not limitedto, diagonal swipes, loops, curves, multi-touch inputs, tap sequences,and other complex touch paths.

FIG. 13 illustrates an exemplary device 1300 showing a part of a userinterface, in accordance with some implementations. The device 1300includes a display area 1302. In some implementations, the device is amobile phone, mobile audio player, or the like. A media preview area1304 is displayed on the display 1302, and can include any appropriateinformation. As shown, the media preview area 1304 includes an artistname, album title, album art, and a preview button 1306. As describedabove, the preview button 1306 is configured, in some implementations,so that a tap input (e.g., a momentary input) causes the album and/orindividual songs on the album to be presented by adding it to aplaylist. Alternatively, if the preview button 1306 is pressed and held(e.g., a maintained input), one or more tracks from the album arepreviewed as long as the input is maintained.

As noted above, in some implementations, media content can be previewedin response to a cursor being “hovered” over a particular area of adisplay screen. For example, a media browsing environment presented in aweb page or media player application may include multiple graphicalitems (also referred to as “tiles”) corresponding to media content, suchas albums, playlists, songs, audiobooks, movies, videos, and the like.In some implementations, the tiles include depictions of album art,media content metadata (e.g., album title, track listings, authors,actor names, artist names, artist photos, etc.), and the like. The tilemay also include a “preview” area that, when selected, causes a previewof the media content to be presented. In some implementations, thepreview area corresponds to an icon, graphic, text, picture, or otherdiscernible area within or associated with the tile. In someimplementations, when the user hovers over this area with a cursor, apreview of the media content associated with the tile is initiated. Insome implementations, the preview is initiated once the user has hoveredover the area for a length of time, such as 0.5 seconds, 1 second, 2seconds, or any other appropriate duration. In some implementations, thepreview continues until the user removes the cursor from the area (e.g.,until the cursor is no longer within the area defined by the icon).

In some implementations, once the preview has been initiated, itcontinues until the user removes the cursor from a second, larger area.In some implementations, the second area corresponds to a tile, asdescribed above. Once the preview is initiated, then, the user canremove the cursor from the preview area (e.g., a preview icon) and thepreview will continue until the cursor is removed from the larger tilearea. In some implementations, the second area (e.g., the tile) iscontiguous with the first area (e.g., the preview icon). For example, apreview icon may be displayed at least partially within a tile,graphically connected to the tile (e.g., having at least a single commonborder), or fully within (i.e., completely surrounded by) a tile.

In some implementations, when the preview is initiated, additionalcontrol elements are displayed to the user. For example, in someimplementations, once a user hovers over a preview icon for a sufficienttime, the preview starts and one or more playback controls appear withwhich the user can control the preview. The playback controls mayinclude controls (e.g., icons, graphics, etc.) to skip forward, skipbackward, fast forward, rewind, pause, stop, add media content to aplaylist, jump to specific track (e.g., track numbers), play now, playnext, etc. The controls may be selected in any appropriate way, such asby hovering over the control (e.g., moving the cursor from the previewicon to the control icon), or clicking on the control (e.g., left- orright-clicking). In some implementations, where the media content to bepreviewed includes multiple media content items, such as where the mediacontent is an album or a playlist, the controls allow the user to skipbetween the individual content items during the preview. In someimplementations, the controls display numbers associated with individualtracks of an album, and selecting a number (e.g., by hovering over thenumber or clicking on the number) initiates a preview of that particularalbum track.

FIG. 14 illustrates an exemplary user interface 1400, in accordance withsome implementations. The user interface 1400 is divided into threesections with dotted lines. The segments may be understood as depictinga portion of the user interface at different times during a userinteraction. The user interface 1400 includes tiles, such as tile 1402in the left-most segment of the user interface 1400. The tiles includeinformation about media content, including artist name, album title, andalbum art. The tiles include a preview icon, such as preview icon 1404in the left-most segment of the user interface 1400. As described above,preview icons may define or be associated with areas that, when a cursoris detected therein, cause a preview of the media content associatedwith the tile to begin.

The middle segment of the user interface 1400 illustrates a tile 1411with a preview icon 1412 before any preview associated with this tilehas been activated. The outline of the preview icon 1412 is shown indashed lines to illustrate the area of the display that is “active” suchthat if the cursor 1408 is detected within that area, a previewassociated with that tile will be presented. The dashed line border ofthe preview icon 1412 is provided here for illustrative purposes;borders or other graphical features or elements of a preview icon may ormay not change during an interaction with a user. (In someimplementations, the border of a preview icon and/or a media informationtile flashes, moves, is made bold, is animated, changes color, changesbrightness, or otherwise changes to grab the user's attention and, insome implementations, indicate that an interaction with the border willcause the device to take some action.) The right-most segment of theuser interface 1400 illustrates a tile 1414 after a preview has beeninitiated in response to detecting the cursor 1408 within the area ofthe preview icon. The outline of the tile 1414 is shown in dashed linesto illustrate the area of the display that is “active” such that if thecursor 1408 is detected outside that area, the preview that wasinitiated by detecting the cursor 1408 within the preview icon willcease. Also, the right-most segment includes media control icons 1410that were displayed in response to detecting the cursor 1408 within thepreview icon. In this example, the media control icons 1410 correspondto track numbers of the album associated with the tile 1414. Because the“active” region has been expanded to the border of the tile 1414, thepreview will continue even if the user moves the cursor 1408 aroundwithin the area of the tile 1414. Thus, the user may move the cursor1408 to the media control icons to select different tracks to preview,e.g., by clicking on or hovering over them. Other types of controls mayalso be provided instead of or in addition to the track numbers shown inFIG. 14. For example, as described above, the media control icons mayinclude fast forward, rewind, skip, play, pause, add to playlist, playnext, and the like.

When a user is browsing or is otherwise presented with media contentthat can be previewed, it is also beneficial to ensure that the mediacontent can be presented to the user quickly and without delays. Thus,portions of media content that may be previewed by a user can bepre-fetched (e.g., downloaded and buffered/cached) so as to reduce orminimize the delay between the selection of the preview and thepresentation of the media content. In some implementations, previews ofmedia content are initiated by a user selection of a control that isdisplayed to the user. A control, such as a button, icon, graphic, text,etc., can be displayed, for example, in a web page (e.g., a web pageassociated with a social networking service, such as FACEBOOK), or in amedia player/browser application. Moreover, controls may be displayed onany type of device, such as a computer (e.g., laptop, desktop, tablet),mobile phone, etc.

In some implementations, media content for a preview is pre-fetched whena control associated with a media content preview is displayed to auser. Accordingly, at least a portion of each media content that couldbe previewed at a given time—as determined by those controls that aredisplayed to the user and hence are selectable by the user—is downloadedand buffered/cached so that it can be presented to the user withoutundue delays if selected. (Where previewable media content includesserveral individual media content items, such as when the media contentis an album or a playlist, pre-fetching a portion of the album caninclude pre-fetching a part of each track or a subset of tracks of themedia content.) In some implementations, when a control ceases to bedisplayed to the user, then, the pre-fetched media content associatedwith that control can be deleted or marked for deletion.

In the various implementations described above, the various inputs,outputs, and actions described may be performed by one device orcombinations of devices. For example, a user may browse media contentand select media content for preview on a first electronic device 102-1(e.g., a laptop computer), and use a second electronic device 106-1(e.g., a home stereo system) to present the preview or other mediacontent. Or, a user may browse and select media content on one deviceand also preview the media content on that same device (e.g., a firstelectronic device 102-1).

In implementations where media content is pre-fetched, the media contentcan be downloaded and/or cached to the device that will present themedia content (e.g., the second electronic device 106-1), even if thecontrol that triggers the pre-fetching is displayed at a differentdevice (e.g., the first electronic device 102-1). For example, if a useris browsing media content on a mobile phone while listening to othermedia content via a home audio system, media content can be downloadedby the home audio system in response to a control being displayed on themobile phone. In some implementations, the browsing device and thepresentation device are in communication with each other so that thebrowsing device can cause the presentation device to pre-fetch mediacontent associated with controls that are displayed on the browsingdevice at that time. For example, if a user is presented with a controlin a web page or an application on a mobile phone that would allow himto preview the song “American Pie” by Don McLean, the mobile phone cansend a request to the home audio system to download a portion of“American Pie.” In some implementations, the mobile phone sends arequest to a remote server (discussed below), and the server causes thehome audio system to download the portion of the song.

In some implementations, the browsing device and the playback device arethe same device. When the device detects that a control for initiating apreview is displayed, it can request (or receive without issuing arequest) a portion of the media content to be presented if the userselects the control.

A remote server (e.g., server system 120, FIG. 1) can determine when acontrol for initiating a preview of media content is displayed to auser, and send or otherwise enable access to the media content inresponse. For example, in some implementations, the remote server itselfcauses the control to be displayed to the user (e.g., by serving a webpage or content for a web page to the user). When the remote serverdetects that the control is sent to the user's device or otherwisedisplayed to the user, the server can also download a portion of themedia content to a device in case the user should initiate presentationof the media content. The device to which the portion of the mediacontent is downloaded depends on serveral factors. For example, it maybe downloaded to a device that is currently presenting other mediacontent to the user. Or, if no device is currently presenting othermedia content to the user, it may be downloaded to the browsing device.Or it may be downloaded to a device that the user most frequently ormost recently used to present media content.

In some implementations, the preview control itself is configured toinitiate the pre-fetching when it is displayed. For example, a “preview”button in a web page may be configured to cause a download request(e.g., an HTTP request) to be sent to the remote server when the buttonis displayed in a web browser (or other application). In someimplementations, the download request includes a user or accountidentifier that associates the download request with a particular useror a particular set of devices. In some implementations, the downloadrequest is sent to the same server that delivers media content to auser's presentation device (or a server that is associated with theservice that delivers media content). Thus, when a download request isreceived from a user who is already receiving media from the contentprovider, the server system (or, more generally, a content provider) candeliver the portion of the media content to the same device that that iscurrently presenting media content. Then, if the user selects thecontrol to initiate presentation of the new media content (e.g., topreview it), the presentation device can simply begin presenting thepre-fetched portion of the content.

Various techniques for providing media controls to a user are discussedin commonly owned U.S. application Ser. No. 13/443,781, entitled“Systems and Methods for Controlling a Local Application Through a WebPage,” which is hereby incorporated by reference in its entirety.

In some implementations, media content is provided by a remote server(e.g., server system 120). The remote server may be associated with acontent provider that provides access to media content such as music,movies, podcasts, audiobooks, etc. In some implementations, the remoteserver communicates with browsing devices (e.g., mobile phones,computers, or any device on which a user may browse media content andselect media content for presentation and/or preview) and withpresentation devices (e.g., televisions, home audio systems, computers,mobile phones, or any device that can present media content). Browsingdevices, presentation devices, and remote servers, communicate by anyappropriate communication standards, protocols, or technologies, such asInternet Protocol (e.g., including Transmission Control Protocol, UserDatagram Protocol, Internet Control Message Protocol, Hypertext TransferProtocol, etc.), BLUETOOTH, Wired Ethernet (e.g., IEEE 802.3), WirelessFidelity (Wi-Fi) (e.g., IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, and/orIEEE 802.11n), or any other suitable communication protocol, includingcommunication protocols not yet developed as of the filing date of thisdocument.

Various implementations described above may also be advantageously usedto facilitate previewing of individual songs or tracks that are sampledin a currently played song. For example, some songs include smallportions of other songs mixed in to create a composite work. This and/orsimilar techniques are known as “sampling.” In some implementations, apreview control can be displayed to a user when a currently presentedsong includes samples of other songs. When selected, the preview controlinitiates a preview of the song (or songs) that are sampled in thecurrently presented song. The preview control may be presented to theuser on any appropriate device, such as a first electronic device 102-1,or a second electronic device 106-1.

For example, if the user is listening to the song “Come with Me” by SeanCombs (which includes a sample of the Led Zeppelin song “Kashmir”), auser may be presented with a preview control (e.g., a button or icon, asdescribed above). When selected, the original Led Zeppelin version ofthe song “Kashmir” is then presented to the user. In someimplementations, the various techniques described above for selecting amedia content preview, seamlessly integrating the preview into currentlypresented media, and pre-fetching media content are used in thistechnique as well.

In some implementations, the songs that are sampled in a currentlyplayed song are identified using a service or a lookup table thatidentifies the songs that are sampled in other songs. For example, aserver system associated with a media content provider (e.g., serversystem 120) may access a lookup table to determine if a song that isbeing presented to a user contains any samples of other songs. If so,original versions of the sampled songs may be made available for previewby the user. The lookup table may be stored and/or maintained by thecontent provider, or by a third party.

FIG. 3 is a block diagram illustrating a server system 120, inaccordance with some implementations. The server system 120 typicallyincludes one or more processing units (CPUs) 302, one or more networkinterfaces 304, memory 306, and one or more communication buses 308 forinterconnecting these components.

Memory 306 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM, or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 306 may optionallyinclude one or more storage devices remotely located from the CPU(s)302. Memory 306, or alternately the non-volatile memory device(s) withinmemory 306, includes a non-transitory computer readable storage medium.In some implementations, memory 306 or the computer readable storagemedium of memory 306 stores the following programs, modules and datastructures, or a subset thereof:

-   -   an operating system 310 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module 312 that is used for connecting        the server system 120 to other computers via the one or more        communication network interfaces 304 (wired or wireless) and one        or more communication networks, such as the Internet, other Wide        Area Networks, Local Area Networks, Personal Area Networks,        metropolitan area networks, VPNs, and so on;    -   one or more server application module(s) 314 for enabling the        server system 120 to perform the functions offered by the server        system 120, including but not limited to:        -   a streaming module 122 for streaming media content to an            electronic device (e.g., first and second electronic devices            102-n, 106-n, FIG. 1) remote from the server system 120;        -   a request processing module 316 for receiving requests from            electronic devices (e.g., first and/or second electronic            devices 102-n, 106-n, FIG. 1), wherein the requests include            requests to stream specific media content to the electronic            devices and/or requests to change the destination of the            media content stream (e.g., media content stream 114,            FIG. 2) from a first electronic device to a second            electronic device;        -   a context tracking module 318 for tracking and storing the            context of a media content stream (e.g., media content            streams 114-1, 114-2, FIG. 2), including storing, among            other data, the current playback position in a media content            stream that is currently being presented by an electronic            device (e.g., first and/or second electronic devices 102-n,            106-n, FIG. 1), the position in a current playlist, the play            history of a user, the preferences of a user, previously            skipped media content, whether media content items were            “liked” or “disliked” (e.g., via “starred,” “thumbs-up,”            and/or “thumbs-down” indications), and the like;        -   a context access module 320 for allowing electronic devices            (e.g., first and/or second electronic devices 102-n, 106-n,            FIG. 1) associated with a given user account to access the            current context for media content streams associated with            the given user account; and    -   one or more server data module(s) 330 for storing data related        to the data server system 120, including but not limited to:        -   media content database 124 including a library of media            content;        -   a context database 126 including information associated with            one or more media content streams (e.g., media content            streams 114-1, 114-2, FIG. 2), wherein context information            includes the current playback position in a media content            stream, metadata relating to the media, a position in a            playlist, play history of a user, user preferences, skipped            media, and user settings; and        -   a user profile database 332 including account information            for a plurality of users, each account including user media            histories, user preferences, and determined user interests.

FIG. 4 is a block diagram illustrating a client system 101, inaccordance with some implementations. In some implementations, theclient system 101 represents first electronic devices 102-n and/orsecond electronic devices 106-n. The client system 101 typicallyincludes one or more processing units (CPUs) 402, one or more networkinterfaces 410, memory 412, and one or more communication buses 414 forinterconnecting these components. The client system 101 includes a userinterface 404. The user interface 404 includes user interface elementsthat enable output 406 to be presented to a user, including via speakersor a visual display. The user interface 404 includes user interfacecomponents that facilitate user input 408 such as a keyboard, a mouse, avoice-command input unit, a touch sensitive display, or other inputbuttons 408. In some implementations, the client system 101 is awireless device, such as a mobile phone. Furthermore, some clientsystems 101 use a microphone and voice recognition to supplement orreplace the keyboard.

Memory 412 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM, or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. Memory 412 may optionallyinclude one or more storage devices remotely located from the CPU(s)402. Memory 412, or alternately the non-volatile memory device(s) withinmemory 412, includes a non-transitory computer readable storage medium.In some implementations, memory 412 or the computer readable storagemedium of memory 412 stores the following programs, modules and datastructures, or a subset thereof:

-   -   an operating system 416 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module 418 that is used for connecting        the client system 101 to other computers via the one or more        communication network interfaces 410 (wired or wireless) and one        or more communication networks, such as the Internet, other Wide        Area Networks, Local Area Networks, Personal Area Networks,        metropolitan area networks, VPNs, local peer-to-peer and/or        ad-hoc connections, and so on;    -   a presentation module 420 for enabling presentation of media        content at the client system 101 through the output mechanisms        406 associated with the user interface 404 (e.g., screens,        speakers, headphones, etc.);    -   one or more client system applications module(s) 422 for        enabling the client system 101 to perform the functions offered        by the client system 101, the application module(s) 422        including but not limited to:        -   a media stream reception module 424 for receiving (and, in            some implementations, transcoding) a media content stream            (e.g., media content stream 114-n, FIG. 2) from a server            system (e.g., server system 120, FIG. 2), the media content            stream including data needed to present media content at the            client system 101 and context data for the media content            stream, wherein the media content stream can include a            variety of media types including, but not limited to, audio            media such as music, radio, audio books, and podcasts, video            media such as internet videos, television programming,            movies, digital photographs, and any other type of digitally            transmissible media (e.g., games, images, advertisements,            etc.);        -   a media presentation and control application 104 for            presenting media content by the client system 101, for            controlling media presentation by other electronic devices,            and for interacting with the server system 120;        -   a control request generation module 428 for, in response to            user input, generating a server media control request for            transmission to the server system (e.g., server media            control request 112, FIG. 2) and a local media control            request for transmission to the second electronic device            (e.g., local media control request 116, FIG. 2) via a Local            Area Network, VPN, BLUETOOTH, peer-to-peer, etc.;        -   a webpage display module 430 (including, e.g., a web            browser) for displaying a webpage published by a third            party;        -   a condition evaluation module 432 for determining whether a            predetermined condition is met; in some implementations, the            condition evaluation module 432 periodically determines            whether any predetermined condition has been met; and        -   an automatic request generation module 434 for, in response            to a determination by the condition evaluation module 432            that a predetermined condition is met, generating a request            for transmission to the server system without any direct            user input;    -   an electronic device data module 440 for storing data, including        but not limited to:        -   media content buffer(s) 105 including media content data            received from a stream from the server system (e.g., server            system 120, FIG. 2) and stored in the memory of the client            system 101 until it is presented by the client system 101;        -   predetermined condition database 442 including, but not            limited to, one or more predetermined conditions,            established by the user of the client system 101, that            determine whether a media control request to change the            destination of the media content stream (e.g., media content            stream 114-1, FIG. 2) from the server system should be            automatically generated;        -   media content database 444 for storing, on the local device,            media content that is part of the user's personal library of            media content; and        -   a user profile database 446 including account information            for a specific user of the client system 101 including user            media history, user preferences, determined user interests,            and account credentials.

FIGS. 5-8 are flow diagrams illustrating a process of controlling mediapresentation at an electronic device, in accordance with someimplementations. Each of the operations shown in FIGS. 5-8 maycorrespond to instructions stored in a computer memory or computerreadable storage medium. Optional operations are indicated by dashedlines (e.g., boxes with dashed-line borders).

In some implementations, the first electronic device corresponds to thefirst electronic device 102-1, discussed above (also described withrespect to FIG. 4). A media control command for a second electronicdevice is received (502). In some implementations, the media controlcommand corresponds to a user input. In some implementations, the userinput is received via user interface 404 of the first electronic device102-1. For example, the user may select a song for playback by pressinga representation of the song (e.g., an icon, title, etc.) on atouchscreen of a mobile phone. In some implementations, the firstelectronic device is selected from the group consisting of: a computer,a mobile phone, a remote control device, a portable media player, andthe like. In some implementations, the second electronic device isselected from the group consisting of: a television, a home mediareceiver/player, a computer, a home audio/visual system, a speaker, andthe like. In some implementations, any of the identified devices, andother devices not explicitly listed, may be a first electronic device ora second electronic device.

In response to receiving the media control command, a server mediacontrol request is sent to a server system (504). In someimplementations, the server system corresponds to the server system 120,discussed above. In some implementations, the server media controlrequest is sent to the server system over the Internet (505). In someimplementations, the server system is associated with an IP addressoutside an IP address space of a local network to which both the firstelectronic device and the second electronic device are connected (506).

Also in response to receiving the media control command, a local mediacontrol request is sent to a second electronic device within a localnetwork to which both the first electronic device and the secondelectronic device are connected (508). In some implementations, thelocal network is a Local Area Network, as discussed above. In someimplementations, the first electronic device and the second electronicdevice are associated with IP addresses within the same subnetwork(510). The local media control request is sent over any communicationtype that allows communication between the two electronic deviceswithout having to leave the local network. In some implementations, thelocal media control request is sent via Wi-Fi, BLUETOOTH, or the like.

In some implementations, the server and the local media control requestsare both configured to cause a single media control operation to beimplemented at the second electronic device. For example, if a userinputs a media control command into a mobile phone requesting that thesong “Jessie's Girl” be presented by a second electronic device, such asa home media system, the mobile phone will send two media controlrequests that are each configured to cause the home media system tobegin playback of “Jessie's Girl.” Sending both media control requestsincreases the speed with which the second electronic device responds tothe request and the reliability of the request being received. In someimplementations, the second electronic device has already buffered someof the requested media content and can therefore begin presenting thatcontent without needing to wait for the arrival of a media contentstream from the server system, as discussed below. Also, the local andserver media control requests need not contain identical data, but theyare configured to cause the same media control operation to occur at thesecond electronic device. In some implementations, the media controloperation is selected from the group consisting of: play, pause, skip,fast-forward, rewind, adjust an audio volume, change an order of itemsin a playlist, add items to a playlist, remove items from a playlist,adjust audio equalizer settings, set a user setting, and the like. Insome implementations, the local and server media control requestsinclude information specifying a particular electronic device from agroup of available electronic devices to be controlled as the secondelectronic device.

In some implementations, the first electronic device provides a singleuser interface that allows a user both to select media content forpresentation by the first electronic device and to generate mediacontrol requests configured to cause the media content to be presentedby the second electronic device (512). For example, as described above,a user can control playback of media content at the device that ispresenting the user interface (e.g., a mobile phone that is displaying amedia player application) and also control playback of media content ata different device (e.g., a home media system or remote speaker) usingthe same application and/or user interface. Thus, the user need notswitch between applications or user interface environments in order tocontrol the various devices, including the device on which the userinterface is presented.

In some implementations, the media content is selected from the groupconsisting of, but not limited to: an audio track, a video, an image, anaudio playlist, and a video playlist. In some implementations, when themedia content is a video, the video is presented on a display associatedwith the second electronic device (514). In some implementations, whenthe media content is an audio track, the audio track is presented on aspeaker associated with the second electronic device (516).

FIGS. 6A-6B are flow diagrams illustrating a method 600 of controllingmedia presentation at an electronic device, in accordance with someimplementations. In some implementations, the method 600 is performed ata second electronic device having one or more processors and memorystoring one or more programs for execution by the one or more processors(e.g., second electronic device 106-n, FIG. 1). For example, the secondelectronic device may be a home media system, television, computer, orthe like. In some implementations, the method 600 corresponds to amethod implemented in conjunction with and/or in response to the method500.

In some implementations, the method 600 corresponds to an implementationwhere media control requests that are sent to the server system from thefirst electronic device (e.g., the server media control request 112,FIG. 2) are forwarded to the second electronic device without the serversystem attempting to perform the media control operation. Thus, theserver system acts as a relay or forwarding service for a media controlrequest from the first electronic device. This may be used inimplementations where a media control request is only performed if therequest originates from the device that is to perform the action (orthat is to be impacted by the action). For example, a device acting as aremote control cannot alone cause the server to begin streaming media toa second electronic device, because the control request did notoriginate from the second electronic device. Rather, the secondelectronic device must itself make the request to the server.Accordingly, the server forwards the media control request to the secondelectronic device, and the second electronic device can then perform anoperation to satisfy the request (e.g., requesting media content fromthe server, changing a media presentation setting, etc.).

With reference to FIG. 6A, a server media control request correspondingto a media control operation to be implemented at the second electronicdevice is received from a server system, wherein the server mediacontrol request was sent from the server in response to the serverreceiving the server media control request from a first electronicdevice (602). In some implementations, the server media control requestis sent from the server system to the second electronic device over theInternet (603). In some implementations, the server system is associatedwith an IP address outside an IP address space of a local network towhich both the first electronic device and the second electronic deviceare connected (604).

A local media control request sent within a local network to which boththe first electronic device and the second electronic device areconnected is received from the first electronic device, wherein thelocal media control request corresponds to the media control operation(606). In some implementations, the local network is a Local AreaNetwork, as discussed above. In some implementations, the firstelectronic device and the second electronic device are associated withIP addresses within the same subnetwork (608). The local media controlrequest is sent over any communication type that allows peer-to-peercommunication between the two electronic devices without having to leavethe local network. In some implementations, the local media controlrequest is sent via Wi-Fi, BLUETOOTH, or the like.

Because the second electronic device may receive the server mediacontrol request and the local media control request from differentsources and via different communication paths, the requests may notarrive in a consistent or predictable order. That is, in some cases, thelocal media control request may arrive before the server media controlrequest, while in other cases, the order is reversed. However, asubsequently received media control request may not be a duplicate ofthe prior request, and so it should not be ignored simply because it wasreceived shortly after another request. Accordingly, in someimplementations, the second electronic device will determine whether toperform or ignore the media control requests based on various factors,as described with respect to FIG. 6B.

Method 600 continues on FIG. 6B. In some implementations, when theserver media control request is received prior to the local mediacontrol request, the following steps are performed. The media controloperation is performed in response to receiving a server media controlrequest (610). After receiving a local media control request, it isdetermined whether the server media control request and the local mediacontrol request correspond to the same media control operation (612). Ifthe server media control request and the local media control requestcorrespond to the same media control operation, the local media controlrequest is ignored (614). In some implementations, if the server mediacontrol request and the local media control request correspond todifferent media control operations, the local media control request isperformed (616). In cases where the local media control request isreceived prior to the server media control request, steps similar to(610)-(616) are employed to determine whether to ignore or perform theserver media control request. Thus, the second electronic device isprevented from performing the same media control operation twice insuccession, thus preventing possible pauses, jumps, or otherinterruptions in the media content presentation caused by the processingof both the local and the server media control requests.

In some implementations, whether the server media control request andthe local media control request correspond to the same media controloperation is determined using timestamps. For example, in someimplementations, the server media control request includes a firsttimestamp and the local media control request includes a secondtimestamp. In some implementations, the first and the second timestampboth correspond to a time at which the first electronic device issuedthe media control requests. In some implementations, the first timestampcorresponds to a time at which the server system received a server mediacontrol request from the first electronic device, and the secondtimestamp corresponds to a time at which the first electronic deviceissued the local media control request. Accordingly, determining thatthe server media control request and the local media control requestcorrespond to the same media control operation includes comparing thefirst and the second timestamps. If the timestamps are the same orsubstantially similar, it is determined that the local media controlrequest and the server media control request correspond to the samemedia control operation, and the local media control request is ignored.In some implementations, timestamps are substantially similar if theyare within 1 second. In some implementations, they are substantiallysimilar if they are within 5 seconds. Other times may be used dependingon the needs of any specific implementation. In some implementations,other time ranges are used to determine if timestamps are consideredsubstantially similar. If the timestamps are not the same orsubstantially similar, it is determined that server media controlrequest and the local media control request do not correspond to thesame media control operation, and the local media control request isperformed.

As discussed above, it may be desirable for users to cause media contentthat is being presented at one device to be transferred to anotherdevice for presentation at that device. For example, a user listening tomusic on a mobile phone may decide to switch the playback device fromthe phone to a home stereo system. In the process of terminatingpresentation at one device and initiating presentation at another,however, processing and communication delays can cause pauses or gaps inpresentation that diminish the overall user experience. Accordingly, insome implementations, the second electronic device (e.g., the devicethat is to begin presenting media content) buffers an upcoming portionof media content that is being presented at the first electronic device(e.g., the device that is currently presenting the media content). Insome implementations, the second electronic device is configured tobuffer the upcoming portion of media content that is being presented atthe first electronic device when the first electronic device isconnected to the same local network (e.g., a LAN, a BLUETOOTHconnection, etc.), when the first electronic device is within apredetermined proximity to the second electronic device (e.g., withinthe same building, room, floor, etc., as determined by a GPS, forexample), and the like. In some implementations, one or more of thedevices, including the first and second electronic devices and theserver system, are configured to determine when and whether tobuffer/cache media content at the second electronic device. Bufferingmedia content at a second electronic device is discussed further withreference to steps (617)-(622).

In some implementations, the media control operation corresponding toone or more media control requests is a request to begin presentingmedia content at the second electronic device while the media content isbeing presented by the first electronic device (617). Prior to receivingthe server media control request or the local media control request, anupcoming portion of the media content being presented by the firstelectronic device is buffered at the second electronic device (618). Forexample, the second electronic device may continuously receive and storea portion of the media content that is being presented at the firstelectronic device. In some implementations, the second electronic devicereceives the media content for buffering from the server system. Themedia content may be sent from the server system via the Internet. Insome implementations, the second electronic device receives the mediacontent for buffering from the first electronic device. In theseimplementations, the media content may be sent from the first electronicdevice via the local network. In some implementations, the bufferedmedia content has a lower bit-rate than media content that is beingpresented and/or streamed for current presentation, thus helping toreduce bandwidth and network usage for the buffering technique. In someimplementations, where the media content is audio, it is presented at abit-rate of either about 160 kbps or 320 kbps, and it is buffered atabout 96 kbps. Other bit-rates may be used for the presentation bit-rateand the buffering bit-rate, depending on factors such as availablenetwork speeds and capabilities, distances between devices, devicecapabilities, user preferences, and the like.

In some implementations, one of the server media control request or thelocal media control request is received at the second electronic device(620), and, in response, presentation of the buffered portion of themedia content is initiated at the second electronic device (622).

Accordingly, when the second electronic device receives a command tobegin presenting the media content, the presentation can begin withoutthe additional time necessary to initialize a media content stream orotherwise download or receive the media content in a way suitable forcontinuous presentation. In some implementations, the second electronicdevice buffers about 5 seconds of the media content that is beingpresented by the first electronic device. In some implementations, itbuffers about 10 seconds of the media content. In some implementations,it buffers more or less time, depending on the needs of any specificimplementation.

In some implementations, the media content continues to be presented bythe first electronic device in substantial synchronization with thepresentation by the second electronic device. In some implementations,the media content ceases to be presented by the first electronic devicewhen presentation begins at the second electronic device (although itmay still be cached/buffered at the first electronic device, in someimplementations).

FIG. 7 is a flow diagram illustrating a method 700 of controlling mediapresentation at an electronic device in accordance with someimplementations. In some implementations, the method 700 is performed ata second electronic device having one or more processors and memorystoring one or more programs for execution by the one or moreprocessors. For example, the second electronic device may be a homemedia system, television, computer, or the like. In someimplementations, the method 700 corresponds to a method implemented inconjunction with and/or in response to the method 500. In someimplementations, the method 700 corresponds to an implementation wheremedia control requests that are sent to the server system (e.g., serversystem 120, FIG. 2) from the first electronic device (e.g., the servermedia control request 112, FIG. 2) are performed without first beingforwarded to the second electronic device. Thus, the server system willtake action when it receives a control request, even if the requestoriginated from a different device than that which is to be acted upon.In some implementations, local media control requests (e.g., the localmedia control request 116, FIG. 2) are also received by the secondelectronic device after having been sent from the first electronicdevice, and are processed by the second electronic device when received,if appropriate.

With reference to FIG. 7, a local media control request corresponding toa media control operation is received from a first electronic device,wherein the local media control request is sent within a local networkto which both the first electronic device and the second electronicdevice are connected (702). In some implementations, the local networkis a Local Area Network, as discussed above. In some implementations,the first electronic device and the second electronic device areassociated with IP addresses within the same subnetwork (703). The localmedia control request is sent using any communication type that allowscommunication between the two electronic devices without having to leavethe local network. In some implementations, the local media controlrequest is sent via Wi-Fi, BLUETOOTH, or the like.

A media stream is received from a server system, wherein the mediastream was sent from the server in response to the server receiving aserver media control request from the first electronic device, andwherein the server media control request corresponds to the mediacontrol operation (704). Accordingly, in this case, when the firstelectronic device requests a media control operation (e.g., initiated bya user or automatically), the second electronic device receives a localmedia control request, as well as a media stream that corresponds tothat same media control request.

In some implementations, the media stream is sent from the server systemto the second electronic device over the Internet (705). In someimplementations, the server system is associated with an IP addressoutside an IP address space of a local network to which both the firstelectronic device and the second electronic device are connected (706).

Because the second electronic device receives both a media stream and alocal media control request that may correspond to the same mediacontrol operation, the second electronic device should determine whetherto perform a subsequently received local media control request.Accordingly, in some implementations, when the media stream is receivedprior to receiving the local media control request, the secondelectronic device determines whether to perform or ignore the localmedia control request. In some implementations, in response to adetermination that the local media control request corresponds to arequest to initiate presentation of the media stream, the local mediacontrol request is ignored (708). In some implementations, in responseto a determination that the local media control request does notcorrespond to the request to initiate presentation of the media stream,the local media control request is performed (710). Thus, the secondelectronic device is prevented from performing the same media controloperation twice in succession, thus preventing possible pauses, jumps,or other interruptions in the media content presentation.

In some implementations, whether the local media control requestcorresponds to a request to initiate presentation of the media stream isdetermined using timestamps. For example, in some implementations, themedia stream includes a first timestamp, and the local media controlrequest includes a second timestamp. In some implementations, the firstand the second timestamp both correspond to a time at which the firstelectronic device issued the media control requests. In someimplementations, the first timestamp corresponds to a time at which theserver system received a media control request from the first electronicdevice, and the second timestamp corresponds to a time at which thefirst electronic device issued the local media control request.Accordingly, determining that the local media control requestcorresponds to a request to initiate presentation of the media streamincludes comparing the first and the second timestamps. If thetimestamps are the same or substantially similar, it is determined thatthe local media control request corresponds to the media stream, and thelocal media control request is ignored. In some implementations,timestamps are substantially similar if they are within 1 second. Insome implementations, they are substantially similar if they are within5 seconds. In some implementations, other time ranges are used todetermine if timestamps are considered substantially similar. If thetimestamps are not the same or substantially similar, it is determinedthat the local media control request corresponds to the media stream,and the local media control request is performed.

FIG. 8 is a flow diagram illustrating a method 800 of controlling mediapresentation, in accordance with some implementations. In someimplementations, the method 800 is performed at a server system havingone or more processors and memory storing one or more programs forexecution by the one or more processors (e.g., server system 120, FIGS.1-3).

A server media control request is received from a first electronicdevice (802). The first electronic device also sends a local mediacontrol request to the second electronic device within a local networkto which both the first electronic device and the second electronicdevice are connected. The server media control request and the localmedia control request are both configured to initiate a same mediacontrol operation by the second electronic device. As described above,in some implementations, the server media control request is sent to theserver system over the Internet (803). In some implementations, theserver system is associated with an IP address outside an IP addressspace of a local network to which both the first electronic device andthe second electronic device are connected (804). In someimplementations, the local network is a Local Area Network. In someimplementations, the first electronic device and the second electronicdevice are associated with IP addresses within the same subnetwork(805).

At least one of the server media control request or a media streamcorresponding to the server media control request is sent to the secondelectronic device (806). In some cases, the server forwards all theserver media control requests to the second electronic device. In somecases, the server performs the media control operation requested by theserver media control request. For example, if the server media controlrequest requests playback of media content at the second electronicdevice (e.g., a home media system), the server streams the media contentto the second electronic device. In some implementations, the serverperforms some media control requests, but forwards others to the secondelectronic device. For example, requests to control playback of mediacontent (including commands such as play, pause, skip, repeat, etc.) areperformed by the server, while requests that relate specifically to thesecond electronic device (e.g., change the volume, change an inputsource, etc.) are forwarded to the second electronic device.

FIGS. 9-12 are flow diagrams illustrating a method for previewing mediacontent, in accordance with some implementations. Each of the operationsshown in FIGS. 9-12 may correspond to instructions stored in a computermemory or computer readable storage medium. Optional operations areindicated by dashed lines (e.g., boxes with dashed-line borders).Moreover, each of the operations shown in FIGS. 9-12 may be executed byany appropriate device or combination of devices, including firstelectronic devices 102-n, second electronic devices 106-n, and/or aserver system 120.

With reference to FIG. 9, in some implementations, the method 900 isperformed at a first electronic device having one or more processors andmemory storing instructions for execution by the one or more processors.In some implementations, the electronic device corresponds to the firstelectronic device 102-1, discussed above. A first input is detected(902). In some implementations, the first input is a touch inputincluding a contact with a touch-sensitive surface. In someimplementations, the first input is a mouse click-down event.

In response to determining that a change to the first input has beendetected within a first time period after detecting the first input,first media content is added to a playlist (904). In someimplementations, the first input is detected (902) during presentationof second media content, and the playlist includes the second mediacontent. Thus, in these implementations, the change to the first inputcauses the first media content to be added to a playlist that iscurrently being presented. In some implementations, adding the firstmedia content to the playlist comprises adding the first media contentto an end of the playlist. In some implementations, adding the firstmedia content to the playlist comprises adding the first media contentas next media content in the playlist. In some implementations, addingthe first media content to the playlist comprises replacing existingcontent in the playlist with the first media content.

In some implementations, the change to the first input is a liftoff froma touch-sensitive surface, such as a touchscreen. In someimplementations, the change to the first input is an additional contactwith the touch-sensitive surface, wherein the contact and the additionalcontact correspond to distinct contact areas of the touch-sensitivesurface. In some implementations, the change to the first input is amouse click-release event. In some implementations, the change to thefirst input is a gesture, swipe, cursor movement, or multi-touch input.

In some implementations, the first time period is 0.5 seconds. In someimplementations, the first time period is 1 second. In someimplementations, the first time period is 2 seconds.

In response to determining that a change to the first input has not beendetected within the first time period after detecting the first input,the first media content is caused to be presented to the user (906). Insome implementations, causing the first media content to be presented tothe user includes presenting the media content on the same device thatreceived the first input. In some implementations, it includes sending arequest to another device to initiate presentation of the media content.

In some implementations, causing the first media content to be presentedincludes reducing a volume of the second media content while the firstmedia content is presented (908). In some implementations, reducing thevolume includes muting the second media content. In someimplementations, reducing the volume includes pausing the second mediacontent. In some implementations, causing the first media content to bepresented also includes ceasing presentation of the first media contentin response to detecting a change to the first input after the firsttime period.

In some implementations, the first media content comprises a pluralityof media content items. In such instances, a directional component ofthe first input can be used to navigate among individual media contentitems of the first media content. For example, in some implementations,the first media content is a playlist, album, listing of podcasts, orthe like. In some implementations, the method further includes detectinga direction of the first input (910). A next media content item of theplurality of media content items is caused to be presented in responseto detecting that that the direction is a first direction (912). In someimplementations, a previous media content item of the plurality of mediacontent items is caused to be presented in response to determining thatthe direction is a second direction (914). In some implementations, thefirst direction corresponds to an input movement having a predetermineddirectional component in a right-hand direction. In someimplementations, the second direction corresponds to an input movementhaving a predetermined directional component in a left-hand direction.In some implementations, the first direction corresponds to an inputmovement having a predetermined directional component in a downdirection. In some implementations, the second direction corresponds toan input movement having a predetermined directional component in an updirection.

With reference to FIG. 10, in some implementations, the method 1000 isperformed at a first electronic device having one or more processors andmemory storing instructions for execution by the one or more processors.In some implementations, the electronic device corresponds to the firstelectronic device 102-1, discussed above. A first input is detectedduring presentation of a first song (1002). Various inputs that may bedetected are described above. The audibility of the first song isreduced (1004). In some implementations, reducing the audibility of thefirst song includes reducing the volume of the first song; in someembodiments it includes muting the first song; in some implementations,it includes pausing the first song. In some implementations, reducingthe audibility of the first song includes sending a command to a remotedevice, where the command is configured to cause that device to reducethe audibility of the first song.

A second song is caused to be presented (1006). In some implementations,causing the second song to be presented includes beginning playback ofthe second song at the device. In some implementations, causing thesecond song to be presented includes sending a request to a remotedevice to initiate playback of the second song.

The method also includes, after a first time period, causing thepresentation of the second song to be ceased (1008), and causing theaudibility of the first song to be increased (1010). In someimplementations, the first time period corresponds to the duration of amaintained input. In some implementations, the end of the first timeperiod corresponds to an expiration of a timer. In some implementations,the end of the first time period corresponds to an end of a previewportion of the second song. In some implementations, the end of thefirst time period corresponds to detecting a change to the first input,such as a liftoff from a touch-sensitive surface or a mouseclick-release event.

With reference to FIG. 11, in some implementations, the method 1100 isperformed at a first electronic device having one or more processors andmemory storing instructions for execution by the one or more processors.In some implementations, the electronic device corresponds to the firstelectronic device 102-1, discussed above. During presentation ofcurrently presented media content, an affordance is displayed to a user,wherein selection of the affordance will cause secondary media contentto be presented (1102). In some implementations, the affordancecorresponds to an icon (e.g., a thumbnail image of an album cover ormovie poster), graphic, or text. In response to displaying theaffordance, at least a portion of secondary media content is obtained(1104). In some implementations, the portion of the secondary mediacontent is received by the same device that displayed the affordance. Insome implementations, it is received by a different device, such as asecond electronic device 106-n. In some implementations, it is sent by aserver system remote from the device that displayed the affordance, suchas server system 120.

In some implementations, the secondary media content includes multiplemedia content items, and obtaining at least a portion of the secondarymedia content includes obtaining at least a portion of each mediacontent item of the secondary media content. For example, if thesecondary content corresponds to an album, at least a part of each trackis obtained for caching/buffering by a presentation device. In someimplementations, obtaining at least a portion of the secondary mediacontent includes obtaining an initial media content item and the nextmedia content item in the playlist. In some implementations, obtainingat least a portion of the secondary media content includes obtaining aninitial media content item and the next two media content items in theplaylist.

A first input corresponding to a selection of the affordance is detected(1106). In some implementations, the first input corresponds to any ofthose inputs discussed above (e.g., mouse clicks or hovers, touch eventsand gestures, etc.). The audibility of the currently presented mediacontent is reduced (1108). In some implementations, this includesmuting, lowering the volume or brightness of, and/or pausing thecurrently presented media content. The secondary media content ispresented (1110). After a first time period, the presentation of thesecondary media content is ceased (1112), and the audibility of thecurrently presented media content is increased (1114). In someimplementations, the first time period corresponds to the duration of amaintained input. In some implementations, the end of the first timeperiod corresponds to an expiration of a timer. In some implementations,the end of the first time period corresponds to an end of a previewportion of the second song. In some implementations, the end of thefirst time period corresponds to detecting a change to the first input,such as a liftoff from a touch-sensitive surface or a mouseclick-release event.

With reference to FIG. 12, in some implementations, the method 1200 isperformed at a first electronic device having one or more processors andmemory storing instructions for execution by the one or more processors.In some implementations, the electronic device corresponds to the firstelectronic device 102-1, discussed above. The presence of a cursor isdetected in a first area of a display (1202). In some implementations,the first area of the display corresponds to an icon (e.g., a thumbnailimage of an album cover or movie poster), graphic, or text. In someimplementations, the first area is displayed partially or entirelywithin, adjacent to, and/or contiguous with a second area of the displayregion. In some implementations, the second area of the display regioncorresponds to a media content description area (e.g., a tile, asdiscussed above), including, for example, album art, movie stills,content metadata, artist information, artist photographs, and the like.

Media content is presented in response to detecting the presence of thecursor within the first area (1204). In some implementations, the mediacontent corresponds to a preview of the media content identified and/ordescribed in the media content description area. In someimplementations, the media content is presented after the cursor hasbeen detected in the first area for a time period, such as 0.5 seconds,1 second, 2 seconds, or any other appropriate time period.

The removal of the cursor from a second area of the display region isdetected (1206), where the second area is larger than and contiguouswith the first area. In some implementations, the second area shares atleast one border with the first area.

In some implementations, the second area completely encompasses thefirst area on all sides.

Presentation of the media content is ceased in response to detecting theremoval of the cursor from the second area (1208). Thus, in someimplementations, after the media content is presented—in response todetecting the cursor in the first area—it will continue to be presenteduntil the cursor is removed from the larger second area.

In some implementations, in response to detecting the presence of thecursor in the first area of the display, one or more additional iconsare displayed within the second area of the display (1210). In someimplementations the one or more additional icons include media playbackcontrols. In some implementations, the media playback controls areselected from the group consisting of: play, pause, stop, skip forward,skip backward, add to playlist (e.g., add as next, add to end, replaceplaylist), and audio track indices.

FIG. 15 is a flow diagram illustrating a method 1500 of pre-fetching atleast a portion of media content for preview and/or addition to a playlist. In some implementations, the method 1500 is performed by performedat a first electronic device having one or more processors and memorystoring instructions for execution by the one or more processors. Insome implementations, the electronic device corresponds to the firstelectronic device 102-1, discussed above. The method 1500 includesdetecting the presence of a user controlled cursor (or the like) in afirst area of a display associated with a media content item (1501). Forexample, in some implementations, the method includes detecting that theuser is using a peripheral control device (e.g. a stylus, track ball, atouch pad, a mouse, a touch screen, etc.) to “hover” a displayed cursoron a window, a sub-window, a frame or a tile associated with a songand/or a video file. In some implementations, a window, a sub-window, aframe or a tile comprises a preview pane in which one or more mediacontent items (i.e., audio files, video files, images, etc.) aredisplayed.

Subsequently, the method 1500 optionally includes determining if theuser controlled cursor remains in the first area for a durationthreshold (1502). For example, in some implementations, the methodincludes determining if the cursor is hovering over a preview pane for athreshold amount of time. As such, the method 1500 includes determiningif the duration threshold has been breached before proceeding (1503). Ifthe threshold has not been breached (“No” path from 1503), the cursorhas left the first area and the method circles back to the portionrepresented by block 1501. On the other hand, if the threshold has beenbreached (“Yes” path from 1503), the method 1500 includes transmitting arequest for at least a portion of the media content item represented inthe first area (1504). For example, in some implementations, the methodincludes transmitting a request for at least a portion of a song (i.e.,audio file) represented by a graphic in a preview pane. In someimplementations, a preview version of the media content item isavailable. In some implementations, the full version of the mediacontent item is available. In some implementations, a preview version ofan audio or video file includes less than the entirety of a full version(e.g. the first minute of a song). In some implementations, a previewversion of an audio or video file includes a lower quality version ofthe full quality version.

In response to the transmitted request, the method 1500 includesreceiving a portion of the media content item (1505). The method 1500includes storing the received portion in a local cache (1506). Havingstored the received portion, the method 1500 includes waiting to receivean input from a user indicative of the user making a selection withrespect to the media content item before a local timer expires (1507).If the user does not make a selection before the local timer expires(“TO” path from 1507), the method 1500 includes flagging the receivedportion of the media content item for deletion (1508). In someimplementations, flagged content is deleted after a predetermined amountof time and/or when the local cache reaches capacity. On the other hand,if the user makes a selection (“UI” path from 1507), the method includesdetermining whether the user selection indicates that the user haschosen to preview the media content item or add the media content itemto a library or playlist (1509).

If the user input indicates that the user has selected a preview(“Preview” path from 1509), the method 1500 includes playing thereceived portion of the media content item until the user providesanother input or until the received portion is over (1510). In someimplementations, a preview is a predetermined excerpt of pre-fetchedfull version. In other words, a full version is downloaded in thepre-fetch method but only a portion of it is made available for apreview using software permission controls. On the other hand, if theuser input indicates that the user has selected to add the media contentitem to a library or playlist (“Add” path from 1509), the method 1500includes adding the media content item to the library or playlist(1511). In some implementations, adding the media content item includestransmitting a request for a full version when the full version was notprovided in the pre-fetch routine. In some implementations, addition themedia content item includes changing the software permission controls sothat the user has access to a full version of the media content itemreceived during the pre-fetch routine.

FIG. 16 is a flow diagram illustrating a method 1600 of pre-fetching atleast a portion of media content for preview and/or addition to a playlist. In some implementations, the method 1600 is performed by performedat a first electronic device having one or more processors and memorystoring instructions for execution by the one or more processors, suchas for example, a smartphone or tablet device. In some implementations,the electronic device corresponds to the first electronic device 102-1,discussed above. The method 1600 includes detecting the new display of afirst area associated with a media content item (1601). For example, insome implementations, the method includes detecting that the user hascontrolled the display to reveal a portion of a website or applicationthat was not previously visible on the device display, and that newlydisplayed portion is associated with a song and/or a video file. In someimplementations, the portion is included in a window, a sub-window, aframe or a tile and comprises a preview pane in which one or more mediacontent items (i.e., audio files, video files, images, etc.) aredisplayed.

Subsequently, the method 1600 optionally includes determining if thefirst area remains visible on the device display for a durationthreshold (1602). As such, the method 1600 includes determining if theduration threshold has been breached before proceeding (1603). If thethreshold has not been breached (“No” path from 1603), the user hascontrolled the display so that the first area is no longer visible andthe method circles back to the portion represented by block 1601. On theother hand, if the threshold has been breached (“Yes” path from 1603),the method 1600 includes transmitting a request for at least a portionof the media content item represented in the first area (1604). Forexample, in some implementations, the method includes transmitting arequest for at least a portion of a song (i.e., audio file) representedby a graphic in a preview pane. In some implementations, the fullversion of the media content item is available. In some implementations,a preview version of the media content item is available. In someimplementations, a preview version of an audio or video file includesless than the entirety of a full version (e.g. the first minute of asong). In some implementations, a preview version of an audio or videofile includes a lower quality version of the full quality version.

In response to the transmitted request, the method 1600 includesreceiving a portion of the media content item (1605). The method 1600includes storing the received portion in a local cache (1606). Havingstored the received portion, the method 1600 includes waiting to receivean input from a user indicative of the user making a selection withrespect to the media content item before a local timer expires (1607).If the user input indicates that the user has selected a preview (“UP”path from 1607), the method 1600 includes playing the received portionof the media content item until the user provides another input or untilthe received portion is over (1608). In some implementations, a previewis a predetermined excerpt of pre-fetched full version. In other words,a full version is downloaded in the pre-fetch method but only a portionof it is made available for a preview using software permissioncontrols.

On the other hand, if the user does not make a selection before thelocal timer expires (“TO” path from 1607), the method 1600 includesflagging the received portion of the media content item for deletion(1609). In some implementations, flagged content is deleted after apredetermined amount of time and/or when the local cache reachescapacity.

Having flagged the received portion for deletion, the method 1600includes waiting to receive an input from a user indicative of the usermaking a selection with respect to the media content item before a localtimer expires (1610). If the user does not make a selection before thelocal timer expires (“TO” path from 1610), the method 1600 includesdeleting the flagged received portion of the media content item (1612).On the other hand, if the user input indicates that the user hasselected a preview (“UP” path from 1610), the method 1600 includesunflagging the received portion of the media content item (1611) andplaying the received portion in preview mode until the user providesanother input or until the received portion is over (1608).

The methods illustrated in FIGS. 5-12, 15 and 16 may be governed byinstructions that are stored in a computer readable storage medium andthat are executed by at least one processor of at least one server. Eachof the operations shown in FIGS. 5-12, 15 and 16 may correspond toinstructions stored in a non-transitory computer memory or computerreadable storage medium. In various implementations, the non-transitorycomputer readable storage medium includes a magnetic or optical diskstorage device, solid state storage devices, such as Flash memory, orother non-volatile memory device or devices. The computer readableinstructions stored on the non-transitory computer readable storagemedium may be in source code, assembly language code, object code, orother instruction format that is interpreted and/or executable by one ormore processors.

Plural instances may be provided for components, operations, orstructures described herein as a single instance. Finally, boundariesbetween various components, operations, and data stores are somewhatarbitrary, and particular operations are illustrated in the context ofspecific illustrative configurations. Other allocations of functionalityare envisioned and may fall within the scope of the implementation(s).In general, structures and functionality presented as separatecomponents in the example configurations may be implemented as acombined structure or component. Similarly, structures and functionalitypresented as a single component may be implemented as separatecomponents. These and other variations, modifications, additions, andimprovements fall within the scope of the implementation(s).

It will also be understood that, although the terms “first,” “second,”etc. may be used herein to describe various elements, these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another. For example, a first contact couldbe termed a second contact, and, similarly, a second contact could betermed a first contact, which changing the meaning of the description,so long as all occurrences of the “first contact” are renamedconsistently and all occurrences of the second contact are renamedconsistently. The first contact and the second contact are bothcontacts, but they are not the same contact.

The terminology used herein is for the purpose of describing particularimplementations only and is not intended to be limiting of the claims.As used in the description of the implementations and the appendedclaims, the singular forms “a”, “an” and “the” are intended to includethe plural forms as well, unless the context clearly indicatesotherwise. It will also be understood that the term “and/or” as usedherein refers to and encompasses any and all possible combinations ofone or more of the associated listed items. It will be furtherunderstood that the terms “comprises” and/or “comprising,” when used inthis specification, specify the presence of stated features, integers,steps, operations, elements, and/or components, but do not preclude thepresence or addition of one or more other features, integers, steps,operations, elements, components, and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined (that a stated condition precedent is true)” or “if (a statedcondition precedent is true)” or “when (a stated condition precedent istrue)” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

The foregoing description included example systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative implementations. For purposes of explanation,numerous specific details were set forth in order to provide anunderstanding of various implementations of the inventive subjectmatter. It will be evident, however, to those skilled in the art thatimplementations of the inventive subject matter may be practiced withoutthese specific details. In general, well-known instruction instances,protocols, structures and techniques have not been shown in detail.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific implementations. However, theillustrative discussions above are not intended to be exhaustive or tolimit the implementations to the precise forms disclosed. Manymodifications and variations are possible in view of the aboveteachings. The implementations were chosen and described in order tobest explain the principles and their practical applications, to therebyenable others skilled in the art to best utilize the implementations andvarious implementations with various modifications as are suited to theparticular use contemplated.

1. (canceled)
 2. A first electronic device, comprising: one or moreprocessors; and memory storing one or more programs, wherein the one ormore programs are configured to be executed by the one or moreprocessors, the one or more programs including instructions for: while afirst media content item of a first type of media content is playingback on a second electronic device, detecting, at the first electronicdevice, a user input selecting a second media content item; in responseto the user input, determining whether the selected second media contentitem is of the first type or a second type of media content; inaccordance with a determination that the second media content item is ofthe first type of media content, generating a media control request forcontrolling playback of the second media content item at the secondelectronic device; and in accordance with a determination that thesecond media content item is of the second type of media content,generating a media control request for controlling playback of thesecond media content item at a third electronic device that is distinctfrom the second electronic device.
 3. The first electronic device ofclaim 2, wherein the first type of media content comprises a video, andthe second electronic device is a display device.
 4. The firstelectronic device of claim 2, wherein the second type of media contentcomprises audio, and the third electronic device is a speaker.
 5. Thefirst electronic device of claim 2, wherein: the media control requestis a local media control request that is sent to the second electronicdevice or third electronic device; and the one or more programs furtherinclude instructions for, generating a server media control request thatis sent to a server system.
 6. The first electronic device of claim 5,wherein the local media control request and the server media controlrequest are both configured to cause a single media control operation tobe implemented at the second electronic device or third electronicdevice.
 7. The first electronic device of claim 2, the one or moreprograms further include instructions for: while the first media contentitem is playing back, receiving a user input for a media control commandfor the first media content item; and in response to the user input,sending a media control operation for the media control command to thesecond electronic device.
 8. The first electronic device of claim 7,wherein the media control operation is selected from the groupconsisting of: play, pause, skip, fast-forward, rewind, adjust an audiovolume, change an order of items in a playlist, add items to a playlist,remove items from a playlist, adjust audio equalizer settings, and set auser setting.
 9. The first electronic device of claim 2, wherein thefirst electronic device is distinct from the second electronic device.10. A method, comprising: at a first electronic device with one or moreprocessors and memory storing one or more programs that are configuredto be executed by the one or more processors: while a first mediacontent item of a first type of media content is playing back on asecond electronic device, detecting, at the first electronic device, auser input selecting a second media content item; in response to theuser input, determining whether the selected second media content itemis of the first type or a second type of media content; in accordancewith a determination that the second media content item is of the firsttype of media content, generating a media control request forcontrolling playback of the second media content item at the secondelectronic device; and in accordance with a determination that thesecond media content item is of the second type of media content,generating a media control request for controlling playback of thesecond media content item at a third electronic device that is distinctfrom the second electronic device.
 11. The method of claim 10, whereinthe first type of media content comprises a video, and the secondelectronic device is a display device.
 12. The method of claim 10,wherein the second type of media content comprises audio, and the thirdelectronic device is a speaker.
 13. The method of claim 10, wherein: themedia control request is a local media control request that is sent tothe second electronic device or third electronic device; and the methodfurther comprises, generating a server media control request that issent to a server system.
 14. The method of claim 13, wherein the localmedia control request and the server media control request are bothconfigured to cause a single media control operation to be implementedat the second electronic device or third electronic device.
 15. Themethod of claim 10, further comprising: while the first media contentitem is playing back, receiving a user input for a media control commandfor the first media content item; and in response to the user input,sending a media control operation for the media control command to thesecond electronic device.
 16. The method of claim 15, wherein the mediacontrol operation is selected from the group consisting of: play, pause,skip, fast-forward, rewind, adjust an audio volume, change an order ofitems in a playlist, add items to a playlist, remove items from aplaylist, adjust audio equalizer settings, and set a user setting. 17.The method of claim 10, wherein the first electronic device is distinctfrom the second electronic device.
 18. A non-transitory computerreadable storage medium storing at least one program configured forexecution by at least one processor of a first electronic device, the atleast one program comprising instructions for: while a first mediacontent item of a first type of media content is playing back on asecond electronic device, detecting, at the first electronic device, auser input selecting a second media content item; in response to theuser input, determining whether the selected second media content itemis of the first type or a second type of media content; in accordancewith a determination that the second media content item is of the firsttype of media content, generating a media control request forcontrolling playback of the second media content item at the secondelectronic device; and in accordance with a determination that thesecond media content item is of the second type of media content,generating a media control request for controlling playback of thesecond media content item at a third electronic device that is distinctfrom the second electronic device.